javascript - 为什么它返回 NaN 而不是 7?
问题描述
var sum = 2;
function addFive() {
var sum = sum + 5;
console.log(sum); //why not 7
}
addFive();
为什么它返回NaN
而不是 7?
解决方案
为了使事情更清楚,您的代码基本上是这样读取的:
var sum = 2;
function addFive() {
var sum; // implicitly equal to undefined
sum = sum + 5; // sum = undefined + 5 = NaN
console.log(sum); // NaN
}
addFive();
如您所见,您正在重新声明sum
并且它设置为undefined
. 因此,当您尝试添加时2
,undefined
您将得到NaN
(不是数字)。
相反,您可以sum
通过不在函数中重新定义外部变量来引用外部变量,而只需重新分配其值:
var sum = 2;
function addFive() {
sum = sum + 5; // sum = 2 + 5 = 7
console.log(sum); // 7
}
addFive();
推荐阅读
- api - 如何从 API 调用将 kibana(ELK 堆栈)中的数据导出为 CSV?
- javascript - 通过 web3Js 库提交交易时,EVM 已恢复交易
- angular - 尝试使用 Angular 7 (cdkPortal) 应用程序打开新窗口,在 chrome 上运行良好,但在边缘
- swift - 使用 strokePath 和 CGRect 画一个圆
- cobalt - [cobalt]YouTube 视频自动进入暂停模式
- django - django通用更新视图中带有两个提交按钮的动态重定向
- django - 如何配置 ClamAV 自动更新
- apache-spark - 每当我重新启动系统时,它都会显示“utf-8”编解码器无法解码 kafka 中的字节 0x98 来触发
- hibernate - 我正在尝试使用 struts 和 hibernate 建立与 sql server 的 DB 连接,但在 Listener 类中出现错误
- arrays - 如何从列表中查找对应的值?