JS-关于作用域和变量提升

这篇博客探讨了JavaScript中的变量作用域,包括全局作用域与局部作用域的相互影响。详细阐述了变量提升的概念,指出变量声明会被提升到函数顶部,但初始化不会。同时,展示了函数表达式如何提升以及如何影响函数调用。通过实例解释了在不同作用域中如何访问和修改变量,强调了全局变量的this默认指向window,并提醒读者注意局部作用域无法直接访问全局作用域的变量。
摘要由CSDN通过智能技术生成
var a = 10; 

        (function () {
            console.log(a); 
            a = 5;
            console.log(window.a);
            var a = 20;  
            console.log(a);
        })()

// 因为函数体中 存在 var a = 20 ; 所以函数体内容等价于如下代码
(function () {
            var a ; // 此时a为undefined
            console.log(a); // 输入为undefined
            a = 5;  // 给局部作用域 a 赋值
            console.log(window.a); // 这里访问的是全局作用域中的变量 a
            a = 20;  // 给局部作用域 a 赋值
            console.log(a); // 20
        })()

变量提升:函数及变量的声明都将被提升到函数的最顶部

函数体中局部作用域是可以访问外部全局作用域的

全局作用域是无法访问函数体中的局部作用域的

注意:

变量提升只提升变量,对初始化的值不做提升,依然在原位置不动

全局变量的 this 默认指向 window

函数表达式是先提升变量,后在原来位置赋值

fn();
var fn = function(){console.log(1);};
 
//实际上
var fn //提升变量
fn()  // fn is not a function
fn = function(){console.log(1)} //原来的位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值