gpt4 book ai didi

javascript - 为什么我可以对一个字符串和一个数字进行乘法和减法

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

为什么在 JavaScript 中我可以对数字字符串执行乘法和减法运算,例如“10”用数字?

JavaScript 是否进行类型推断?

考虑下面的示例,为什么在最后两个语句中我得到的是 1010 而不是 20?

var foo = "Hello, world!";
var bar = "10";



var x = foo * 10; // x is now bound to type number
console.log("type of x= " + typeof x + ", value of x= " + x); // this will print number NaN, that makes sense..


var y = bar * 10; // y is now bound to type number
console.log("type of y= " + typeof y + ", value of y= " + y); // this will print number 100

y = bar - 10; // y is now bound to type number
console.log("type of y= " + typeof y + ", value of y= " + y); // this will print number 0

y = bar + 10; // y is now bound to type string!!
console.log("type of y= " + typeof y + ", value of y= " + y); // this will print number 1010

y = eval(bar + 10); // y is now bound to type number!!!!
console.log("type of y= " + typeof y + ", value of y= " + y); // this will print number 1010

日志输出:

type of x= number, value of x= NaN
type of y= number, value of y= 100
type of y= number, value of y= 0
type of y= string, value of y= 1010
type of y= number, value of y= 1010

最佳答案

在第二个例子中

var y = bar * 10

Javascript 假设您要执行数学运算并将原始字符串强制转换为数字。

在最后两个示例中,您尝试将 10(数字)加到柱上。 bar(您的变量)是一个字符串,因此 JavaScript 会尽力而为,假设您需要一个字符串作为结果,并通过连接“10”(作为一个字符串)来创建一个字符串,并且不会将您的原始字符串强制转换为数字。

类型强制的规则很复杂。我会尝试为您找到一个链接。但道格拉斯·克罗克福德 (Douglas Crockford) 的“JavaScript: The Good Parts”值得一读。

编辑

试试这个,解释得很好。

http://united-coders.com/matthias-reuter/all-about-types-part-2/

关于javascript - 为什么我可以对一个字符串和一个数字进行乘法和减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24127183/

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