【问题标题】:Why is output of variable NaN [closed]为什么变量NaN的输出[关闭]
【发布时间】:2018-05-30 11:20:42
【问题描述】:

我写了这样的简单代码

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

当我输入 value(5); 时,我会得到 15 号,没关系,但在输入 number; 后会得到 NaN。 我只想在变量中写入函数的结果。

【问题讨论】:

  • 抱歉,有点不清楚。所以它按预期工作。你想在哪里写数字?任何示例用例?
  • 是不是因为您传递的a 作为参数var number = value(a);a 没有数字?
  • 对于这样的代码:var value = function(a) { return a * 3; } var number = value(5); console.log(number); 我得到15 不确定您的问题是什么意思。
  • 看起来a 在您定义number = value(a) 时未设置为任何值。所以value(a) 返回了 NaN,这就是 number 的设置。
  • avalue 函数的范围内是本地的。你不能在函数之外使用它。

标签: javascript function variables nan


【解决方案1】:

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

var y = x * 3;

变量y 将设置为x 在执行该语句时所具有的值的3 倍。如果之前没有给x 赋值,那么它的默认值就是undefined。并且根据JavaScript's arithmetic rulesundefined在算术表达式中使用时会自动转换为NaN,而NaN * 3等于NaN

(实际上,如果您尝试执行上面的代码而不首先声明变量x,那么您应该得到的是ReferenceError: x is not defined 异常。但是如果您添加@987654335在该代码之前的@语句,声明变量x但未定义其值,那么您确实会得到NaN作为y的值。)

您已经将乘法包装在一个函数中这一事实在这里没有任何区别。以下代码:

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

与以下内容完全相同:

var y = x * 3;

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

【讨论】:

    猜你喜欢
    • 2021-06-18
    • 2015-10-29
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2016-07-01
    • 2016-02-28
    • 2018-07-25
    • 2020-08-03
    相关资源
    最近更新 更多