为什么参数在函数外保留其值?

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

  • JavaScript中变量的范围是什么? 25个答案

  • 这种怪异行为的解释是什么?

    因为在Javascript中,变量是函数作用域。

    您从未将ab传递给myTest方法。 你通过了8和5,所以a myTest签名一部分的ab得到了新的范围。 a变成了8, bmyTest里变成了5。

    myTestab值不会在外部使用,因为它们的作用域限于myTest。


    在你的函数里面,你有一个本地a参数。 因此,如果您对该值做出任何更改,它们将不会反映您全局定义的a 。 既然你没有在函数内创建一个c变量或参数,你将会改变全局c值。

    var c = 0;             // Global c
    var a = 0;             // Global a
    var b = myTest(8, 5);  // Store the value of the local a from the function return.
    
    function myTest(a,b) {
        console.log(a);    // This a is a local reference (8)
        a++;               // Increment local a
        c++;               // Increment global c
        console.log(a);    // Print local a               (9)
        return a;          // Return local a
    }
    
    console.log(a);        // Print global a              (0)
    console.log(c);        // Print global c              (1)
    console.log(b);        // Print returned value        (9)
    链接地址: http://www.djcxy.com/p/40835.html

    上一篇: Why don't parameters retain their value outside of a function?

    下一篇: Javascript variable scope within onload function