美文网首页
全局作用域下带var和不带var的区别

全局作用域下带var和不带var的区别

作者: 阿九是只大胖喵 | 来源:发表于2017-02-26 15:45 被阅读0次

在全局作用域中,带var和不带var的关系
区别:带var是可以进行预解释,所以在赋值的前面执行不会报错;不带var的是不能进行预解释的,在前面执行会报错(ReferenceError)。

    console.log(num); // -> undefined
    var num = 12;

    console.log(num2); // ReferenceError: num2 is not defined
    num2 = 12;

关系:num2 = 12; -> 相当于给window增加了一个叫做num2的属性名,其属性值为12。
var num = 12; -> 相当于给全局作用域增加了一个全局变量num,但是不仅如此,它也相当于给window增加了一个属性名num,属性值是12。

    var num = 12;
    console.log(num); // 12
    num2 = 12;
    console.log(num2); // 12 -> window.num2 = 12

私有作用域中出现的一个变量不是私有的,则往上级作用域进行查找,上级没有,则继续向上查找,一直找到window为止,如果window下也没有?
第一种情况:我们是获取值:console.log(total); -> 报错了,ReferenceError。

    function fn() {
        console.log(total); // ReferenceError
        total = 100;
    }
    fn();
    console.log(total); // 100

第二种情况:total = 100; -> 相当于给window增加了一个属性名total,属性值是100

    function fn() {
        // console.log(total); // ReferenceError
        total = 100;
    }
    fn();
    console.log(total); // 100

JavaScript中如果在没有进行任何特殊处理的情况下,上面一行代码报错,下面的代码都不再执行了。

相关文章

  • 全局作用域下带var和不带var的区别

    在全局作用域中,带var和不带var的关系区别:带var是可以进行预解释,所以在赋值的前面执行不会报错;不带var...

  • javascript面试题(持续更新中。。。。)

    1、let与var的区别 var 使用var生命的变量拥有函数作用域和全局作用域 可以不声明就使用 相同的作用域,...

  • js基础

    声明变量带var和不带var的区别? 在全局作用域中申明变量相当于给全局对象window增加了一个属性名在全局作用...

  • JavaScript基础

    1、var let const的区别   -var      -支持全局、函数作用域      -接受重复声明...

  • var let const之间的区别?

    1.var ①var声明的变量没有块级作用域,只有函数作用域和全局作用域 ②var声明的变量有变量提升 ③变量可以...

  • let 和 const 命令

    var、let 和 const 区别?var:1. 只有函数作用域(全局变量和局部变量);2. 会 “变量提升”,...

  • JS红宝书之第三章(二)变量

    var var 声明变量的作用域 不带 var 关键字的声明会默认声明到全局变量上 浏览器指的是 window;N...

  • ES6 学习笔记

    ES6 var let const 的使用 var let const 声明变量 全局作用域 和 块级作用域的区...

  • var let const 区别

    let 和 var 都是用来声明变量的,let的声明范围是块级作用域 var 存在于全局作用域和函数作用域,存在变...

  • ES6 笔记

    1,let var const var 全局作用域,先使用后声明,undefinelet 局部作用域,或块级作用...

网友评论

      本文标题:全局作用域下带var和不带var的区别

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