我写了这样简单的代码
var value = function(a){return a*3;}
var number = value(a);
当我输入value(5);
我会得到15号即可,但在输入number;
之后生病了NaN
。我只想写变量函数的结果。
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
这一事实。)