Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
逗号在JavaScript表达式中起什么作用?_Javascript_Comma Operator - Fatal编程技术网

逗号在JavaScript表达式中起什么作用?

逗号在JavaScript表达式中起什么作用?,javascript,comma-operator,Javascript,Comma Operator,如果我使用: 1.09 * 1; // returns "1.09" 但如果我使用: 1,09 * 1; // returns "9" 我知道1,09不是一个数字 逗号在最后一段代码中起什么作用 更多例子 逗号运算符计算这两个值 它的操作数(从左到右)和 返回第二个值的值 操作数 资料来源: 例如,表达式1,2,3,4,5的计算结果为5。显然,逗号运算符只对有副作用的操作有用 console.log(1,2,3,4,5); 控制台日志((1,2,3,4,5))看一看-逗号代表多个表达式

如果我使用:

1.09 * 1; // returns "1.09"
但如果我使用:

1,09 * 1; // returns "9"
我知道1,09不是一个数字

逗号在最后一段代码中起什么作用

更多例子

逗号运算符计算这两个值 它的操作数(从左到右)和 返回第二个值的值 操作数

资料来源:

例如,表达式
1,2,3,4,5
的计算结果为
5
。显然,逗号运算符只对有副作用的操作有用

console.log(1,2,3,4,5);
控制台日志((1,2,3,4,5))看一看-逗号代表多个表达式/语句。例如,在您的代码中,可以使用如下行:

var a=0, b=0, c=0;
这将声明所有三个变量,无需写入:

var a=0;
var b=0;
var c=0;
希望能有所帮助。

还有一些需要考虑的问题:

console.log((0,9));
console.log((9,0));
console.log((“foo”,“bar”))
逗号运算符计算这两个值
它的操作数(从左到右)和
返回
秒的值
操作数。

应该是这样的


逗号运算符计算每个操作数(从左到右)并返回
最后一个操作数的值


向对象添加/修改属性并在同一行中返回它是一种可能的用例:

console.log(
((x)=>(o={biggerCond:r=>r>=x},
o、 r5=数组.from(window.crypto.getRandomValues(新的Uint16Array(5)),
o、 Isanybiger=o.r5.some(o.biggerCond),
o、 更大=o.IsAnyBiger?o.r5.过滤器(o.biggerCond):[x],o)
)(5e4)
);
//范例
// {
//更大:[584145650063397],
//伊桑比格:没错,
//isBiggerCond:r=>r>=x,
//r5:[58414141411201565006339743861]

//}
特定语法允许您在功能上烘焙面包并将其交给客户食用,而无需
返回
s.

(新数组(3)).fill()
.map(()=>({state:“面团”,bake(){this.state=“bake”},consume(){this.state=“consumered”}}))
.map(bread=>(console.log(`Adding${bread.state}到烤箱.`),bread.bake(),bread))
.map(bread=>(console.log(`Consuming${bread.state}bread.`),bread.consume(),bread))
.map(bread=>console.log(`bread现在是${bread.state}.`))

他们从C中获得了它。我认为它只对有副作用的表达式有用。我想不出有多少情况下,除了保存字符(缩小)或混淆代码之外,逗号运算符还能起到任何作用。@user17753它可以合法地用在
for
循环中以分号分隔的部分。@Cyoce:,一般来说,这种逻辑在循环体中执行得更清楚。有些人会声称他们的方式允许多个
continue
点而不重复,但是你不应该有多个
continue
点。@user17753你有钱了;试图理解一小段缩略代码是我来这里的原因我很惊讶09在八进制文字中的非法“9”没有失败。@递归-任何八进制表示中的9都会导致回退到十进制。不要混淆参数列表中的逗号<代码>警报
只接受一个参数。之后的任何内容都将被丢弃。@安德鲁:是的,由alert()丢弃,它只接受一个参数,但它将被运行!真奇怪。谢谢。@Topera:如果你从JS的角度来考虑,这并不奇怪。在JS中,您不必在函数声明中指定参数列表(您可以使用
参数
对象,该对象可以是任意长度)。即使使用现代编译的JS,也无法提前知道一个函数需要多少参数。考虑这一点:<代码>函数测试():{ var=0;i<AguMuth.Stand;i++){ARG.PASS(参数[i]+1);};<代码>解释程序必须知道函数是如何被使用的,知道它要取多少个ARG。相反,它评估所有的东西。LOL,很有趣:<代码>警报(“1”),警报(“2”),警报(“3”))
@Andrew:Oops,我已经用我想要使用的方法更新了我的答案。逗号运算符计算每个操作数(从左到右)并返回最后一个操作数的值。它有点旧,但需要注意:(1)您提供的示例没有使用逗号运算符(
var
声明不使用逗号运算符,即使它是逗号)和(2)不能使用逗号运算符分隔声明;只允许使用表达式。但当然,您不会将这些神秘的咒语放入生产代码中,对吗?@lightnessracesinorbi不好,我会说这取决于用途(例如,教学、缩短代码、无变量/函数声明等)。如果您像我上面所做的那样缩进它,它是完全可读的…无法停止注意到您使用了单词“cryptic”:嘿,这甚至不是故意的逗号运算符需要两个操作数,所以原始引号是正确的。您所说的是嵌套此类表达式的最终结果,但这意味着您的替换引号的措词有细微的错误。
a,b,c,d
((a),b,c),d)
alert("2",
    foo = function (param) {
        alert(param)
    },
    foo('1')
)
foo('3'); // alerts 1, 2 and 3
var a=0, b=0, c=0;
var a=0;
var b=0;
var c=0;
Adding dough to oven.
Adding dough to oven.
Adding dough to oven.
Consuming baked bread.
Consuming baked bread.
Consuming baked bread.
Bread is now consumed.
Bread is now consumed.
Bread is now consumed.