Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String - Fatal编程技术网

串接字符串中的Javascript构造

串接字符串中的Javascript构造,javascript,string,Javascript,String,下面显示了一段简单的javascript: var mystring = ("random","ignored","text","h") + ("ello world") 此字符串将生成hello world。我有两个问题: “随机”、“忽略”、“文本”、“h”构造是如何被称为(它不是 数组,因为数组有不同类型的括号?) 有人能从技术上解释为什么这个字符串会产生hello world吗?(即,为什么只考虑结构中的“h”字符?) 你遇到了鲜为人知的人 括号和逗号运算符创建一组按顺序计算的表达式

下面显示了一段简单的javascript:

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), {})
      

      我不一定建议你经常使用它,因为它可能会让人困惑,而且通常有一种更清晰(如果更详细)的方法来做同样的事情。

      这是我见过的最快的回答。谢谢!:)