gpt4 book ai didi

javascript - 为什么{}+{}在同一个浏览器下会有不同的结果

转载 作者:行者123 更新时间:2023-11-28 06:07:54 24 4
gpt4 key购买 nike

我在Google浏览器控制台运行是这样的

{}+{} =>“[对象对象][对象对象]”

enter image description here

但是我在源文件中运行是这样的

{}+{} => NaN

enter image description here我在firefox浏览器控制台运行是这样的
{}+{} => NaN

enter image description here

最佳答案

我正在准备另一个答案,基本上是说,“我不知道,但这里有一些我做过的测试并得到了类似的结果”。但突然我意识到了真正的答案。

我认为这在某种程度上是 javascript 语法中未定义的行为。 Chrome 控制台开发人员可能已经意识到这一点,每当您在控制台中编写 {}+{} 时,它都会将代码转换为 ({}+{})。尝试 ({}+{})a={}+{},您将在任何地方得到相同的结果,即 "[object Object][object对象]”。这是在 javascript 中对两个对象应用加号运算符的结果。

但是,当您在代码片段中编写一些代码时,它会按原样进行评估。它将 {}+{} 计算为 NaN。但 NaN 并不是两个对象相加的结果。 {} 是对象构造函数文字。但它也用于范围。所以评估的结果等于:

{ // Open scope
// You can write any working code here
// Only the result of the last statement is printed to console
} // Close scope
+{} // Result of this is NaN
// + is the unary number cast operator not the binary addition operator

您可以使用仅一元运算符来确认这一点。以此为例:

{}~{}
// Error in Chrome console as it is turned into ({}~{}) which is bad syntax
// -1 in eval as it is the result of ~{}

关于javascript - 为什么{}+{}在同一个浏览器下会有不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36662146/

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