В результате [] [[]] является неопределенным , где, как это [[]] [] бросает SyntaxError: Неожиданный маркер]. Любое пояснение?Разница между [] [[]] и [[]] [] в JavaScript?
ответ
используется синтаксис object[key]
, чтобы получить свойство object
key
, которое должно содержать key
внутри []
, иначе будет синтаксическая ошибка.
[][[]]
, объект пустой массив []
, а ключ - еще один пустой массив []
.
[[]][]
, объект представляет собой массив с пустым массивом внутри него, в то время как внутри []
нет ключа.
[]
определяет пустой массив, поэтому [][[]]
можно переписать в виде:
var a = [];
var b = [];
var c = a[b];
Теперь доступ к элементам массива по индексу, где индекс сам по себе является массивом не определен - стандарт не говорит, что должно произойти, но он синтаксически действителен.
Однако [[]][]
сломана - ближайший это может быть написано от руки является:
var a = [];
var b = [];
[b]a;
... что это нонсенс код.
Я не могу понять, почему кто-то когда-либо хотите использовать что-то вроде этого, но вот объяснение:
Случай 1:
[]
является пустой массив. Добавляя к нему [n]
([][n]
), вы ссылаетесь на n-й элемент. n в вашем случае: []
. Интерпретатор пытается преобразовать это в полезное значение и заканчивается пустой строкой (""). Таким образом, вы на самом деле пытаетесь ссылаться на [][""]
, который является undefined.
Случай 2:
[[]]
является пустым массивом внутри пустого массива. Добавляя к нему [n]
([[]][n]
), вы ссылаетесь на n-й элемент внешнего массива. Вам необходимо указать индекс n, иначе он выдает сообщение об ошибке, которое происходит в вашем случае.
Я не могу понять, почему вы должны использовать это, но вот мое объяснение:
[[]] новый Array (новый Array()), который представляет собой массив с одним элементом, пустой массив.
[] - пустой массив, поэтому вы можете сделать [] [2] или [] [0], и он возвращает undefined. Второй [] - индекс.
Итак, в [] [[]] вы ищете индекс, индекс [].
[][0] == [][[]]
Но в [[]] [] индекс пуст, эквивалентно [1,2,3] [] -> SyntaxError: Неожиданный маркер]
ok. просто вы должны получить доступ к массиву с помощью ключа. иначе это вызовет синтаксическую ошибку.
[][[]]
- массив определен, и вы получаете доступ к ключу []
из этого массива, который не определен.
[[]][]
- задан массив, и вы не передаете какой-либо ключ для доступа к этому массиву - синтаксическая ошибка.
Я предполагаю преобразование типов происходит:
[][
// an index is expected here
[] // so javascript probably tries to get a number from this empty array
]
Это может быть эквивалентно:
[][+[]] // +[] gives 0
В то время как в этом шаблоне [[]][]
две массивы объявляются бок о бок.
Объект JavaScript имеет свойства, связанные с ним. Вы получаете доступ к свойствам объекта с простой нотной обозначением или скобкой, а если non existing key
ссылается, это дает значение undefined
.
var obj = {};
obj[ 'key' ]
и одна важная вещь в том, что в массиве JavaScript является объектом
console.log([] instanceof Object) // gives true so it act like object
и самое смешное, что мы проходим, как показано ниже.
var keyCanbeFunction = function(){};
var keyCanbeObject = {};
var keyCanbeArray = [] ;
console.log(obj[ keyCanbeArray ]) // gives undefined, that key not exists
и 1-й случай:
var obj = [];
obj[ keyCanbeArray ] // gives undefined
и второй случай:
var obj = [[ ]]
obj[]; // where is key ???
- 1. разница Javascript между {} и []
- 2. разница Javascript между «=» и «===»
- 3. Разница между + = и = + в javascript
- 4. Javascript + HTML - Разница между '' и ''
- 5. Разница между Javascript и ASP.net
- 6. В чем разница между «и" в JavaScript?
- 7. В чем разница между "и" в JavaScript
- 8. Разница между приложением/javascript и текстом/javascript
- 9. Разница (если есть) между `и 'в javascript
- 10. разница между п() и fn.call() в JavaScript
- 11. Разница в Javascript между uber и prototype
- 12. есть разница между «++» и «+ =» в javascript?
- 13. разница между Function.prototype и Object.prototype в JavaScript
- 14. Разница между объектом и функцией в javascript
- 15. разница между functionName() и functionName.call() в javascript
- 16. Разница между модулем и библиотекой в JavaScript
- 17. Разница в закрытии между Javascript и Lua
- 18. Разница между замораживанием и печатью в Javascript
- 19. разница между window.onload и document.ready в javascript
- 20. Разница в Javascript между localhost и размещенным
- 21. Разница между объектом и интерфейсом в JavaScript
- 22. разница между классом и объектом в Javascript
- 23. В Javascript разница между «Object.create» и «new»
- 24. В чем разница между JavaScript и JScript?
- 25. Разница между формой.submit и window.open() в Javascript
- 26. Разница между использованием и | операторов в JavaScript?
- 27. какая разница между {} и [] в JavaScript
- 28. В чем разница между JavaScript и DOM?
- 29. Разница между функциями в C# и Javascript?
- 30. Разница между объектом и объектом.прототип в Javascript
Кстати, почему вам нужно определить что-то вроде этого? – Kaf
Вы попробовали? Что? Это массив с одним элементом (пустым массивом). Затем [[]] [] получит первый элемент, но вам нужно предоставить индекс (вот почему синтаксическая ошибка, он анализирует «]» вместо числа). –
'([]) ['array object somekey, т.е. []']' дает undefined .. и '([[]]) []' означает 'no key' throws' SyntaxError: синтаксическая ошибка' – rab