Если я использую:
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
javascript
comma-operator
Topera
источник
источник
alert
принимает только один аргумент. Все, что после этого, отбрасывается.arguments
вместо этого вы можете использовать объект, который может быть любой длины). Даже с современным скомпилированным JS не было бы возможности заранее сказать, сколько аргументов примет функция. Подумайте об этом:function test() { args=[]; for (var i = 0; i < arguments.length; i++) { args.push(arguments[i] + 1); } ;
интерпретатор должен знать, как функция использовалась, чтобы знать, сколько аргументов потребуется. Вместо этого он оценивает все.Ответы:
Источник: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
Например, выражение
1,2,3,4,5
оценивается как5
. Очевидно, что оператор запятой полезен только для операций с побочными эффектами.console.log(1,2,3,4,5); console.log((1,2,3,4,5));
источник
for
цикла, разделенном точкой с запятой .continue
точек без дублирования, но тогда у вас не должно быть несколькихcontinue
точек.Еще кое-что для рассмотрения:
console.log((0, 9)); console.log((9, 0)); console.log(("foo", "bar"));
источник
alert("1", alert("2", alert("3")))
last
операнда.https://stackoverflow.com/a/3561056/5934465
Так должно быть!
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
источник
a,b,c,d
is((((a),b),c),d)
Посмотрите здесь - запятая означает несколько выражений / операторов. Например, в вашем коде вы можете использовать такую строку:
var a=0, b=0, c=0;
Это объявит все три переменные без записи:
var a=0; var b=0; var c=0;
Надеюсь, это поможет.
источник
var
объявлениях не используется оператор запятой , даже если это запятая) и (2) вы не можете разделить отчеты с использованием операторов запятой; разрешены только выражения.Возможным вариантом использования является добавление / изменение свойств объекта и возврат его в той же строке :
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 и автоматически корректируют код аналогичным образом. Запустите его в консоли:
((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)
источник