gpt4 book ai didi

javascript - 为什么 `+[[]] + [[]]` 返回一个字符串?

转载 作者:行者123 更新时间:2023-11-28 15:04:24 26 4
gpt4 key购买 nike

有一个声明+[[]] + [[]] 。控制台返回“0”(字符串)。当语句为 +[[]] 时控制台返回 0(一个数字)。为什么第一个返回字符串 if +0+0是0吗?

最佳答案

这里的语法树看起来像

            +
/ \
/ \
+ [ ]
| |
| |
[ ] [ ]
|
|
[ ]

也就是说,二进制+的左侧操作数是一元+运算的结果,右侧操作数是一元+运算的结果[[]] 表达式。

左边是一个数字,根据runtime semantics of the unary + operator运算符,它调用 ToNumber .

右侧是一个对象,通过 ToPrimitive 将其转换为字符串原语(通过调用对象的 toString 方法)在 evaluation of the + operator 的步骤 9 中。对于数组,toString 返回以逗号连接的数组内容的字符串化形式,在本例中为空字符串。

您可以通过覆盖某些对象上的 toString 并查看更改后的结果来验证这一点:

var a = [];
a.toString = function() { return "foo"; };
console.log(0 + a);

这将产生“0foo”

关于javascript - 为什么 `+[[]] + [[]]` 返回一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39755892/

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