首页 > 解决方案 > 无法在函数中设置值

问题描述

function formatNum(num) {
  if (num >10) {
    num = 10;
    console.log(num + " >10");
  }
};
formatNum(number_var);

如果我尝试使用上述函数来确定一个数字是否超过一定数量,它会注意到它确实高于该值,但不会用10.

奇怪的是控制台确实 print out 10 > 10,这使它看起来确实改变了值。例如,稍后引用该值仍会显示该值200。如果我像这样替换调用函数的部分:

if (number_var >10) {
  number_var = 10;
}

这种方式确实有效,这让我觉得我错过了一些不能改变变量值的函数。

标签: javascript

解决方案


JavaScript engineexecution context当您调用function类似您的formatNum和您num variable在该上下文中创建的属性时创建一个新的。

number_var所以和之间没有引用,num因为number_var它是 的一部分global execution context

你可以通过使用来实现这一点execution context scope chain

 function formatNum() {
  if (number_var >10) {
    number_var = 10;
    console.log(number_var + " >10");
  }
};
var number_var =200;
console.log(number_var)
formatNum();
console.log(number_var)

推荐阅读