gpt4 book ai didi

连接字符串中的 Javascript 构造

转载 作者:搜寻专家 更新时间:2023-11-01 05:04:06 31 4
gpt4 key购买 nike

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

var mystring = ("random","ignored","text","h") + ("ello world")

这个字符串会生成 hello world。我有两个问题:

  • 如何调用 ("random","ignored","text","h") 构造(它不是一个数组,因为数组有不同种类的括号?)
  • 有人可以从技术上解释为什么这个字符串会导致 hello world 吗? (即为什么只考虑构造中的“h”字符?)

最佳答案

您遇到了鲜为人知的 comma operator !

括号和逗号运算符创建一组按顺序求值的表达式,然后返回最后一个。所以 ('foo', 'bar') 的计算结果将只是 'bar'。然而,因为每个表达式都被评估,(foo(), bar()) 将调用 both 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"

许多(甚至大多数)语言都有此运算符,但很少使用。当使用 ES6 lambdas 作为 reduce 的主体时,它会很有帮助,比如当您将数组转换为对象时:

[{key: 'a', value: 1}, {key: 'b', value: 2}].reduce((p, c) => (p[c.key] = c.value, p), {})

我不一定建议您经常使用它,因为它可能会造成混淆,而且通常有更清晰(如果更冗长)的方法来做同样的事情。

关于连接字符串中的 Javascript 构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37076071/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com