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


欢迎指正!




猜你喜欢

转载自blog.csdn.net/qq_33745501/article/details/78556136