串接字符串中的Javascript构造
下面显示了一段简单的javascript:串接字符串中的Javascript构造,javascript,string,Javascript,String,下面显示了一段简单的javascript: var mystring = ("random","ignored","text","h") + ("ello world") 此字符串将生成hello world。我有两个问题: “随机”、“忽略”、“文本”、“h”构造是如何被称为(它不是 数组,因为数组有不同类型的括号?) 有人能从技术上解释为什么这个字符串会产生hello world吗?(即,为什么只考虑结构中的“h”字符?) 你遇到了鲜为人知的人 括号和逗号运算符创建一组按顺序计算的表达式
var mystring = ("random","ignored","text","h") + ("ello world")
此字符串将生成hello world。我有两个问题:
- “随机”、“忽略”、“文本”、“h”构造是如何被称为(它不是 数组,因为数组有不同类型的括号?)
- 有人能从技术上解释为什么这个字符串会产生hello world吗?(即,为什么只考虑结构中的“h”字符?)
- 你遇到了鲜为人知的人
括号和逗号运算符创建一组按顺序计算的表达式,然后返回最后一个表达式。所以
('foo','bar')
将计算为'bar'
。但是,由于每个表达式都经过计算,(foo(),bar())
将在返回由bar()
返回的值之前同时调用foo()
和bar()
逐步地,您的代码以如下方式运行:
var mystring = ("random","ignored","text","h") + ("ello world")
var mystring = "h" + ("ello world")
var mystring = "h" + "ello world"
var mystring = "hello world"
许多(甚至大多数)语言都有这个操作符,但很少使用。当使用ES6 lambdas作为reduce
主体时,它会很有帮助,例如将数组转换为对象时:
[{key: 'a', value: 1}, {key: 'b', value: 2}].reduce((p, c) => (p[c.key] = c.value, p), {})
我不一定建议你经常使用它,因为它可能会让人困惑,而且通常有一种更清晰(如果更详细)的方法来做同样的事情。这是我见过的最快的回答。谢谢!:)