为什么输出变量NaN

时间:2017-12-16 13:13:38

标签: javascript function variables nan

我写了这样的简单代码

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

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

1 个答案:

答案 0 :(得分:0)

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

var y = x * 3;

变量y将设置为执行该语句时x具有的值的3倍。如果之前未向x分配任何值,则其默认值为undefined。根据{{​​3}} undefined在算术表达式中使用时会自动转换为NaNNaN * 3等于NaN

(实际上,如果你试图执行上面的代码而不首先声明变量x,你应该获得的是ReferenceError: x is not defined例外。但是如果你在该代码之前添加var x;语句,以声明变量x但保持其值未定义,然后您确实将NaN作为y的值。 )

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

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

完全相同:

var y = x * 3;

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