我有一个变量,其值部分由另一个变量定义。我想更改该变量的值,以便初始变量也更改。但这不会发生。看第二行:
var offset = 0;
var message = 'the number is ' + offset;
如果我修改 "offset" ,那么 "message" 不会改变:
console.log(message); //this says 'the number is 0'
offset +=20; //offset is changed to 20
console.log(message); //the message is still 'the number is 0'
为什么它不起作用,我该如何解决?
它只是一个简单的分配,当程序流到达它时,连接"the number is"
到偏移值并继续向下一行直到程序结束。
这就是 Javascript 的本质,原始类型(Number、String 等)是按值传递的。所以 中的变化offset
不会反映在message
.
变量不“持有”对象,它持有一个引用。您可以将该引用分配给另一个变量,现在两者都引用同一个对象。它总是按值传递(即使该值是引用......)。没有办法改变作为参数传递的变量所持有的值,如果 JS 支持按引用传递,这将是可能的。从这里
为了获得始终依赖的消息值,您可以将其定义为函数:
var offset = 0;
var message = function(){
return('the number is ' + offset);
}
console.log(message()); //this says 'the number is 0'
offset +=20; //offset is changed to 20
console.log(message()); //this says 'the number is 20'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句