为什么输出变量NaN [关闭]

问题描述 投票:-3回答:1

我写了这样简单的代码

var value = function(a){return a*3;}
var number = value(a);

当我输入value(5);我会得到15号即可,但在输入number;之后生病了NaN。我只想写变量函数的结果。

javascript function variables nan
1个回答
0
投票

JavaScript不是computer algebra system,它不能在变量中存储像x * 3这样的代数表达式。相反,当你这样做时:

var y = x * 3;

变量y将被设置为执行该语句时x所具有值的3倍。如果之前没有为x分配任何值,则其默认值为undefined。根据JavaScript's arithmetic rules undefined在算术表达式中使用时自动转换为NaN,而NaN * 3等于NaN

(实际上,你应该得到的,如果你试图执行上面的代码而不首先声明变量x,则是一个ReferenceError: x is not defined异常。但是如果你在该代码之前添加一个var x;语句,则声明变量x但保留其值undefined ,那么你确实会得到NaN作为y的价值。)

你在函数中包含乘法这一事实在这里没有任何区别。以下代码:

var f = function (a) { return a * 3 };
var y = f(x);

与以下内容完全相同:

var y = x * 3;

(当然,除了前一版本还定义函数f这一事实。)

© www.soinside.com 2019 - 2024. All rights reserved.