Запятая возвращает первое значение вместо второго в списке аргументов? - PullRequest
11 голосов
/ 07 апреля 2011

MDN утверждает, что:

Оператор запятой оценивает оба своих операнда (слева направо), а возвращает значение второго операнда .

Однако, когда я попытался запустить <script> alert(1, 2); </script>, он показывает «1» вместо «2».

Я что-то неправильно понимаю?

Ответы [ 3 ]

19 голосов
/ 07 апреля 2011

В контексте вызова функции запятая используется для разделения параметров друг от друга. Итак, вы делаете, что передаете второй параметр alert(), который игнорируется.

То, что вы хотите, возможно таким образом:

 alert((1,2));

Дополнительные скобки формируют параметр самостоятельно; внутри них вы можете использовать запятую как оператор.

6 голосов
/ 07 апреля 2011

Запятая (,) также является разделителем параметров.

Используйте alert((1,2)) вместо.

2 голосов
/ 07 апреля 2011

Когда вы используете его таким образом, запятая - это не оператор, а разделитель между параметрами в вызове метода alert.

Если вы поставите круглые скобки вокруг них, чтобы это было выражение, оно покажет вам 2:

alert( (1,2) );
...