gpt4 book ai didi

javascript - 为什么加法的隐式强制总是产生一个字符串?

转载 作者:行者123 更新时间:2023-11-30 11:17:58 25 4
gpt4 key购买 nike

如果只有第二个操作数是一个字符串,那么输出是一个字符串:

let a = 1 + '2';
console.log(typeof a); // string

如果相反,只有第一个操作数是一个字符串,那么输出仍然是一个字符串:

let b = '1' + 2;
console.log(typeof b); // string

我猜会有某种参数优先级。这个数学函数默认为具有混合类型参数的非数字输出是有原因的吗?

最佳答案

通常情况下,答案是“因为规范如此规定”。更具体地说,section 11.6.1 The Addition operator ( + ) .

第7步,可以阅读

If Type(lprim) is String or Type(rprim) is String, then
     Return the String that is the result of concatenating ToString(lprim) followed by ToString(rprim)

换句话说,如果至少一个操作数是字符串,则结果将是两个操作数的字符串表示形式的串联。

在某种程度上存在优先级,因为如果两个操作数都是函数,那么左边的将在右边的之前被评估,但是对于决定 + 操作是否应该的算法来说并不重要返回一个字符串或一个数字。

注意:我引用了 ECMAScript 5 规范,但您可以在较新版本中找到等效内容。

关于javascript - 为什么加法的隐式强制总是产生一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50867329/

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