javascript - 无法在函数中设置值
问题描述
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 engine
execution 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)
推荐阅读
- javascript - 检查多个对象数组的项
- react-native - 如何在 React Native 中缓存视频
- c# - 了解 ADO.NET 的“连接生命周期”
- java - 无法使用 spring kafka 生产者向 Kafka 发送任何消息 - 超时异常
- sql - Redshift 中的溢出错误
- excel - 宏 Excel:检查单元格是否为空
- javascript - 承诺功能无法识别外部变量
- rust - 为什么 Rust 找不到 wl_display_get_registry?
- python - 如何返回 JSON 请求输入并在另一个函数中使用它?
- python - 有没有更短的方法可以通过列表来实现?