javascript变量与var和不var之间的区别?

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

  • var关键字的用途是什么,什么时候应该使用它(或省略它)? 18个答案

  • 如果在函数中声明一个带有“var”的变量对你的函数是本地的,否则js引擎将开始在本地范围(函数)中查找变量,如果没有找到它,则将在globalspace自动

    从这个链接:https://www.inkling.com/read/javascript-definitive-guide-david-flanagan-6th/chapter-3/variable-scope

    当你声明一个全局JavaScript变量时,你实际做的是定义一个全局对象的属性(全局对象)。 如果使用var声明变量,则创建的属性是不可配置的(请参阅属性属性),这意味着它不能使用删除操作符删除。

    那么如果你在一个函数内或者在全局空间内(在任何函数之外)做:

    温度= 10;

    你可以在任何地方使用它:

    的console.log(window.temp);

    只是一堆嵌套函数(从内部函数开始阅读代码注释以便更好地理解):

    //lots of stuff here but not a "var temp=9"
    
    //I couldn't find "x" I will make it global as a property of the globalObject
     function myFunction(){ //is x here ? no ? then look outside
        (function(){ //is x here ? no ? then look outside
            (function() {  //is x here ? no ? then look outside
                    x=5; //declaring x without var, I will look for it
            }());
        }());
    }
    
    myFunction();
    console.log(window.x); //As x was declared a property from the global object I can do this.
    

    如果你在一个函数中用var声明它,那么你也不能在window.temp做一个函数,该函数的变量对你的函数是“本地”的,例如:

    foo = 1;
    function test() {
        var foo = 'bar';
    }
    test();
    alert(foo);
    
    // Result: 1
    

    来自上面的示例和其他人在这里

    还要注意在全局空间(外部)中使用“var”将会创建一个全局变量(窗口对象中的一个属性) btw,使用var always。


    当你在全局范围内定义变量时,你可以在任何地方访问它。 如果使用var重新定义它,那么该变量仅在当前范围内具有该值。

    在全局范围内定义一个变量:

    var a = 1;
    

    现在你可以通过像这样的函数范围来访问它:

    function print() {
      console.log(window.a); // 1
      window.a = 5;
      anotherFunction(); // 5 
      var a = 3;
      console.log(a); // 3
    }
    function anotherFunction() {
      console.log(a); // 5;
    }
    
    链接地址: http://www.djcxy.com/p/17355.html

    上一篇: Difference between javascript variable with var and without var?

    下一篇: difference between var keyword and without var