2015-04-27 6 views
0

я случайно напечатал:Почему массивы JS принимают разделенные запятыми индексы?

var x = [1, 2, 3, 4]; 
console.log(x[1, 2]); //this will log 3 
console.log(x[3, 1]); //this will log 2 

Оказывается, я могу использовать любое количество разделенных запятыми индексов для обозначения элементов массива. Последний указатель всегда используется. Если последний индекс больше, чем массив, то получается результат undefined.

Почему этот синтаксис работает?

+9

Синтаксис не делает то, что вы думаете о его выполнении. Просмотрите документацию оператора запятой: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator – wrshawn

+0

@EricJ. Я думаю, что одобренный комментарий от user1403582 отвечает на вопрос довольно хорошо. Возможно, я обратил это неправильно; Я не искал намерений специаника. – Jay

+0

Почему вы не прочитали спецификацию или документацию, прежде чем задавать этот вопрос здесь? – Ejaz

ответ

2

Поскольку содержимое скобок доступа к свойствам является выражением. В этом случае выражение представляет собой ряд операндов и comma operators, который в конечном итоге оценивает конечный операнд (2 и 1). Это индекс массива, к которому будет доступен доступ.

Это принципиально такое же, как использование других операторов в выражениях в скобках доступа к свойствам для динамической оценки имени свойства, к которому будут обращаться, например. x[x.length - 1] или x[some_var * 3].

Смежные вопросы