gpt4 book ai didi

javascript - 为什么 Math.sign([]) = 0、Math.sign([20]) = 1 和 Math.sign([20, 30, 40]) = NaN?

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

As Math.sign() 接受数字参数或数字作为字符串,如 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign ,为什么它给出以下结果以及在给出这些结果时内部转换是如何发生的?

console.log(Math.sign([])); // 0

console.log(Math.sign([20])); // 1

console.log(Math.sign([20, 30, 40])) // NaN

最佳答案

期望传递一个数字。如果将非基元传递给它,它会首先尝试将该非基元转换为数字。

当数组转换为数字时,它们的值首先由 , 连接以创建一个字符串,然后解释器尝试将该字符串转换为数字。所以与

Math.sign([]);

空数组转换为空字符串,然后将其转换为数字 - 并且 Number('') 为 0,因此结果为 0。

使用[20],将其连接成一个'20'字符串,然后将其转换为数字20,其符号为正。

使用[20,30,40],它被连接成'20,30,40',它不能转换成数字:

console.log(Number('20,30,40'));

所以输出是NaN

当您不能 100% 确定隐式类型强制转换的结果时,最好始终进行显式类型转换。

关于javascript - 为什么 Math.sign([]) = 0、Math.sign([20]) = 1 和 Math.sign([20, 30, 40]) = NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58569438/

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