JavaScript的作用域和变量提升

1.变量域

js中只有函数作用域(local scope)和全局作用域(global scope),没有块级作用域


2.变量提升

对于val定义的变量和function a(){} ,存在变量提升。

注意:函数表达式不存在变量提升。


实例1:

(function() {

    
    console.log(testc);                                  //打印出undefined

testa(); // 打印出testa testb(); // 报错:提示undefined is not a function function testa() { console.log("testa"); } var testb = function() { console.log("tesb"); } var testc = "testc";})();


实例二:


var a = 1; 
function b() { 
     console.log(a);                                  //function a(){}
     a = 10; 
     console.log(a);                                 //10,此时函数作用域中定义了变量a。
    return; 
    function a() {                         //变量提升到最前面,相当于var a=function(){}
    } 
} 
b(); 
console.log(a);                              // 1 ,访问的是全局变量
 

实例三:

 var a = 1; 
function b() { 
       console.log(a);                              //1,此时a为全局变量
       a = 10; 
       console.log(a);                                 //10,改变了全局变量的值
       return; 
       function c() {

       } 
} 
  b(); 
 console.log(a);                                          //10


欢迎指正!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值