假设我有一个内联脚本标记,其代码非常简单,如下所示
(function() {
var test = "This is a simple test";
function modifyTest(s) {
s = "Modified test text";
};
modifyTest(test);
console.log(test) //Will still display "This is a simple test"
})();
但是如果我使用test = modifyTest(test);
更改已应用我的问题是这样的。
这是在函数内修改 javascript 变量的唯一方法吗,这意味着我必须始终这样做
source = function(source);
为了改变函数内的变量,
或者我是否缺少一个范围概念来阻止我实现这一目标?
The modifyTest
函数本质上是创建一个名为的局部函数级变量s
;该变量只存在于函数的作用域内,因此修改它不会影响外部作用域。
如果你想修改外部作用域,你不会使用参数:
var test = "This is a simple test";
function modifyTest(){
test = "modified test text";
}
console.log(test); // This is a simple test
modifyTest();
console.log(test); // Modified test text
请注意,您可以修改通过引用传递的对象,因此您can修改某些东西的属性:
var o = { test: 'This is a simple test' };
function modifyTest(x){
x.test = 'modified test text';
}
modifyTest(o);
console.log(o.test); // modified test text
你甚至可以通过name您要修改的属性:
var o = { test: 'This is a simple test' };
function modifyTest(x, name){
x[name] = 'modified test text';
}
modifyTest(o, 'test');
console.log(o.test); // modified test text
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)