美文网首页
一种js访问不到全局变量的情况

一种js访问不到全局变量的情况

作者: 是小张啊啊 | 来源:发表于2020-03-14 09:54 被阅读0次

一般来说,在js中声明的全局变量,在哪里都可以访问的到,因为他是在全局作用域中。但是,如果在全局作用域内声明了一个变量a,在函数作用域内又重新声明了a,那么该函数作用域内是访问不到全局作用域中的a,原因是重复声明的变量会覆盖原有的变量。请看下面的两个例子:

    let name = 'lucy';
    (function test() {
        console.log(name);
        if (typeof name === 'undefined') {
            var name = 'LC';
            console.log('Hi!'+name);
        } else {
            console.log('Hi!'+name);
        }
    })();

打印的结果依次是:undefined 和 Hi! LC
原因:用var声明的变量会存在变量提升,在打印第一个name时,由于变量提升此时的name = undefined,并且会覆盖全局变量中的name,所以会进入到if判断语句中,打印LC。

let name = 'lucy';
    (function test() {
        console.log(name);
        if (typeof name === 'undefined') {
            let name = 'LC';
            console.log('Hi!' + name);
        } else {
            console.log('Hi!' + name);
        }
    })();

打印结果依次是:lucy 和 Hi!lucy
原因:打印第一个name时,由于let声明的变量不存在变量提升,所以此时的name值还为全局变量 lucy,进而进入到else语句中,打印出 Hi! lucy

如理解的有错误的地方,请多多指正,非常感谢~~~~

相关文章

  • 一种js访问不到全局变量的情况

    一般来说,在js中声明的全局变量,在哪里都可以访问的到,因为他是在全局作用域中。但是,如果在全局作用域内声明了一个...

  • static、extern、const

    static 修改全局变量 1.static 修饰的全局变量只能在本文件中访问,别的文件中访问不到,对声明他的文件...

  • Python 访问修改全局变量

    遇到在程序中访问全局变量并且要修改全局变量的值的情况可以使用:global关键字,在函数中声明此变量是全局变量 !...

  • JS性能优化 —— JS代码优化

    目录 性能测试工具的介绍使用流程 JS代码优化慎用全局变量缓存全局变量通过原型新增方法避开闭包陷阱避免属性访问方法...

  • 闭包

    对于闭包,我是这么认识的。在我们JS当中,变量分为两种,一种叫全局变量,一种叫局部变量。在这个变量访问的过程中,全...

  • js闭包

    js中任何函数可以访问全局变量,但是局部变量除了访问自己内部的局部变量和自己上级的局部变量之外无法访问别的函数的局...

  • 通过例子理解JS闭包

    理解闭包的前提是对JS变量作用域的熟悉,变量作用域包括全局变量和局部变量。 简要说明:函数内部能够访问全局变量,函...

  • 小程序全局变量

    在app.js里面定义全局变量 在要用到全局变量的某个js文件中

  • JavaScript 闭包、定时器

    什么是闭包? 有什么作用 因为js只存在局部变量和全局变量,函数内部可以访问外部变量,而外部却不能访问局部变量。闭...

  • 2018-06-14

    ///第一种情况,不加block的情况,全局,静态,和局部变量的区别:首先全局变量global_a和静态全局变量s...

网友评论

      本文标题:一种js访问不到全局变量的情况

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