web-dev-qa-db-ja.com

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
86
Topera

コンマ演算子は、そのオペランドの両方を(左から右に)評価し、2番目のオペランドの値を返します。

ソース:https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator

たとえば、式1,2,3,4,55に評価されます。明らかに、カンマ演算子は副作用のある操作にのみ役立ちます。

console.log(1,2,3,4,5);
console.log((1,2,3,4,5));
88
Yuval Adam

さらに考慮すべき点:

console.log((0, 9));
console.log((9, 0));
console.log(("foo", "bar"));
5
Douglas

見てください ここ -コンマは複数の式/ステートメントを表します。たとえば、コードで次のような行を使用できます。

var a=0, b=0, c=0;

これは、3つの変数すべてを記述せずに宣言します。

var a=0;
var b=0;
var c=0;

お役に立てば幸いです。

3
dhh
コンマ演算子は、両方のオペランドを(左から右に)評価し、secondオペランドの値を返します。

https://stackoverflow.com/a/3561056/5934465

こんな感じ!

カンマ演算子は、各オペランドを(左から右に)評価し、lastオペランドの値を返します。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator

2
xgqfrms

オブジェクトにプロパティを追加/変更し、同じ行で返すが考えられる使用例です。

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)
0
CPHPython