gpt4 book ai didi

javascript - 未明确将变量设置为数字会导致后续数学函数产生 NaN

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

这本身并不是一个问题 - 更多的是一般性询问。

以下(工作代码)循环遍历购物车商品表,获取为每个商品输入的价格和数量,并将结果添加到变量“cartTotal”中。

function updateCart(){
var cartTotal = 0;
jQ('#cartItems').find('tr').each(function(){
$this = jQ(this);
var price = $this.find('.itemPrice').text();
price = Number(price.replace(/[^0-9\.]+/g,""));
var qty = $this.find('input').val();
var itemTotal = ( price * qty );
cartTotal += itemTotal;
});
console.log(cartTotal);
};

最初,我声明 cartTotal 时没有给它赋值 0 - 我假设 JavaScript 是松散类型的,一旦添加了数字,它就会“知道” cartTotal 是一个数字,因为这就是我想要的从我读过的各种帖子/文章中被引导理解。但控制台记录了 NaN。

也许我对“松散类型”功能的理解有点过于字面意思了。有人能解释一下为什么不给它一个初始值会产生 NaN 吗?

最佳答案

原因是您试图将数字添加到 undefined 变量,对于 JavaScript undefined + 10 for ex returns NaN,您可以尝试以下方法:

var cartTotal;
cartTotal += 10;
console.log(cartTotal);

有关 nullundefined 之间差异的详细解释,请查看此答案:Why is null an object and what's the difference between null and undefined?

松散类型意味着声明变量时没有其类型,因此

var answer = 42;

是松散类型的,它只是一个保存Number 42的通用框,当涉及到数字加法时,编译器知道如何将两者相加并给出结果。

关于javascript - 未明确将变量设置为数字会导致后续数学函数产生 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16612410/

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