下面显示了一个简单的javascript:
var mystring = ("random","ignored","text","h") + ("ello world")
Run Code Online (Sandbox Code Playgroud)
这个字符串会产生hello world.我有两个问题:
你正在遇到这个鲜为人知的逗号操作员!
括号和逗号运算符创建一组按顺序计算的表达式,然后返回最后一个.所以('foo', 'bar')将评估到'bar'.然而,因为每个表达式,(foo(), bar())将调用二者 foo()并bar()返回由返回的值之前bar().
一步一步,您的代码运行如下:
var mystring = ("random","ignored","text","h") + ("ello world")
var mystring = "h" + ("ello world")
var mystring = "h" + "ello world"
var mystring = "hello world"
Run Code Online (Sandbox Code Playgroud)
许多(甚至大多数)语言都有此运算符,但它很少使用.使用ES6 lambdas作为a的主体时会很有帮助reduce,就像将数组转换为对象一样:
[{key: 'a', value: 1}, {key: 'b', value: 2}].reduce((p, c) => (p[c.key] = c.value, p), {})
Run Code Online (Sandbox Code Playgroud)
我不一定建议你经常使用它,因为它可能会令人困惑,并且通常会有更清晰(如果更详细)的方式来做同样的事情.