修改函数中的变量

这个问题在这里已经有了答案:

  • JavaScript是传递引​​用还是传值语言? 29个答案

  • 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
    

    并不是说您可以修改通过引用传递的对象,因此您可以修改某些属性:

    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
    

    你甚至可以传入你想修改的属性名称:

    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
    

    你正在谈论的是“通过引用”调用一个函数。 JavaScript(与大多数其他功能语言一样)不支持这一点,因为改变当前范围之外的变量是一种副作用,并且与功能性编程范例相矛盾。

    你可以随时改变当前范围内的变量。 因此,在另一个函数中定义的任何函数都可以更改外部函数的任何局部变量。

    链接地址: http://www.djcxy.com/p/20803.html

    上一篇: Modify a variable inside a function

    下一篇: Hard Copy vs Shallow copy javascript