美文网首页
javascript中变量前边有var和没有var的区别

javascript中变量前边有var和没有var的区别

作者: 程序媛萌小雪Mxx | 来源:发表于2018-02-22 16:12 被阅读0次

    在日常的js开发中,我们经常会遇到这样的事情,当变量前加var和不加var好像对程序的运行没什么影响,那到底加var和不加var有什么区别呢?

    首先我们要清楚一下下面代码的含义

    //this is a declaration 声明一个变量
    var foo;
    
    //this is an assignment 给变量赋值
    bar = 3;
    
    //this is a declaration and an assignment 声明变量,同时给此变量赋值
    var dual = 5;
    

    我们再看一下这段代码

    var foo = 1; // declared properly   声明一个变量并赋值
    bar = 2; // implied global  
    window.baz = 3; // global via window object
    
    delete foo; // false
    delete bar; // true
    delete baz; // true
    
    foo; // 1
    bar; // ReferenceError
    baz; // ReferenceError
    

    用var声明的变量会被赋予一个不可被删除的属性,因此当我们用delete去删除他们是不可以的,而没有var声明的变量则可以被删除,因为(bar =2)我们在赋值的时候他会逐层的在作用域中找同名的变量bar,如果找到的话,他会引用此变量,如果没有找到,他最终会被赋给全局对象window,此时,我们用window.bar就可以查看到这个值

    var foo = 'first time use';
    foo = 'second time use';
    

    所以,我们在定义变量的时候不加var,大多数情况是我们已经声明了这个变量,而此时,我只想更改这个变量的值而已。

    external = 5;
    function firsttry() {
      var external = 6;
      alert("first Try: " + external);
    }
    
    function secondtry() {
      external = 7;
      alert("second Try: " + external);
    }
    
    alert(external); // Prints 5
    firsttry(); // Prints 6
    alert(external); // Prints 5
    secondtry(); // Prints 7
    alert(external); // Prints 7
    

    在正常的开发中,如果没有特殊情况建议不要把var漏掉,如果漏掉了可能会出现你想不到的棘手问题。

    对学习抱有热情的开发小伙伴欢迎加入 qq群685421881,更欢迎热爱编程的妹子进入,让我们一起学习 并进步吧!

    相关文章

      网友评论

          本文标题:javascript中变量前边有var和没有var的区别

          本文链接:https://www.haomeiwen.com/subject/ixkztftx.html