我正在更正一些基本的Javascript作业,并且一名学生在构造函数中的这一行让我很沮丧:
this.c = (255, 255, 255);
我想向他们(和我自己)解释为什么这个陈述或任何类似的陈述会求助于最后给出的“论点”。
console.log( ("foo", 42, {}, NaN) ) --> NaN
console.log( ("foo", 42, {}) ) --> Object
console.log( ("foo", 42) ) --> Number
console.log( ("foo") ) --> String
console.log( () ) --> SyntaxError // no longer the same thing
在分配它们的情况下,他们使用该属性作为RGB值,但仅坚持单色,因此它们的代码仍按预期运行。我想知道该语句叫什么(如果有名称?),以及在JS规范方面的表现。
谢谢。
答案 0 :(得分:5)
它是comma operator。这是一个不寻常的运算符:它评估其左操作数,将其丢弃,评估其右操作数,并将结果用作结果值。您有时会看到它用于评估第一个操作数有副作用的地方:
const a = (console.log("foo"), 42);
console.log(a);
上面链接的MDN页面稍微不准确,表明逗号运算符接受两个以上的操作数。它不是,它是一个二进制运算符(它接受两个操作数)。只是从左到右的关联,所以
const a = (1, 2, 3);
与
相同const a = ((1, 2), 3);