Что делает запятая в выражениях JavaScript?
если я использую:
1.09 * 1; // returns "1.09"
но если я использую:
1,09 * 1; // returns "9"
Я знаю, что 1,09-это не число.
что делает запятая в последнем фрагменте кода?
Примеры
if (0,9) alert("ok"); // alert
if (9,0) alert("ok"); // don't alert
alert(1); alert(2); alert(3); // 3 alerts
alert(1), alert(2), alert(3); // 3 alerts too
alert("2",
foo = function (param) {
alert(param)
},
foo('1')
)
foo('3'); // alerts 1, 2 and 3
5 ответов:
оператор "запятая" вычисляет оба его операнды (слева направо) и возвращает значение второго операнд.
источник: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
например, выражение
1,2,3,4,5
оценивает в5
. Очевидно, что оператор "запятая" используется только для операций с побочными эффектами.
еще несколько предупреждений для рассмотрения:
alert((0, 9)); alert((9, 0)); alert(("foo", "bar"));
кроме того, взгляните на Firebug console если вы хотите попробовать это в интерактивном режиме.
посмотреть здесь - запятая обозначает несколько выражений / операторов. Например, в коде вы можете использовать такую строку:
var a=0, b=0, c=0;
это объявит все три переменные без записи:
var a=0; var b=0; var c=0;
надеюсь, что это поможет.
Оператор "запятая" вычисляет оба его операнды (слева направо) и возвращает значениеsecond
операнд.https://stackoverflow.com/a/3561056/5934465
так и должно быть!
оператор "запятая" вычисляет каждый из своих операндов (слева направо) и возвращает значение
last
операнд.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
добавление/изменение свойств объекта и возвращая его в той же строке возможен вариант использования:
console.log( ((x) => (o = {biggerCond: r => r >= x}, o.r5 = Array.from(window.crypto.getRandomValues(new Uint16Array(5))), o.isAnyBigger = o.r5.some(o.biggerCond), o.bigger = o.isAnyBigger ? o.r5.filter(o.biggerCond) : [x], o ) )(5e4) ); // Example // { // bigger: [58414, 56500, 63397], // isAnyBigger: true, // isBiggerCond: r => r >= x, // r5: [58414, 12015, 56500, 63397, 43861] // }
вышеупомянутая анонимная функция возвращает объект со случайными значениями, большими, чем входное значение, или, если его нет, с самим входным значением в массиве, содержащемся в
bigger
собственность.Это все еще синтаксический сахар (например функции стрелочку), но это сокращает количество русло... Интересно, если некоторые JS minifiers обнаруживают и настраивают код подобным образом автоматически. Запустите его в консоли:
((x)=>(o={biggerCond:r=>r>=x},o.r5=Array.from(window.crypto.getRandomValues(new Uint16Array(5))),o.isAnyBigger=o.r5.some(o.biggerCond),o.bigger=o.isAnyBigger?o.r5.filter(o.biggerCond):[x],o))(5e4)