var的作用域与提升

1.变量提升

无论实际声明的位置在何处,都会把变量的声明提升到函数或全局作用域的顶部(而赋值操作还是在原先的位置)

2.变量作用域

在ES5中,js只有两种形式的作用域:全局作用域和函数作用域
1.全局作用域其实是全局对象的作用域,任意地方都可以访问到
2.函数内可以访问函数外的变量,而函数外无法访问函数内的变量

  var i = 2;   //全局变量,全局作用域
  function outer(){
    
       //定义外部函数
	 console.log(i);  //访问全局变量  2
	 function inner(){
    
     //定义内部函数
		 console.log(i);   //访问全局函数 2
	 }
	 inner(); 
  }
  outer();
  console.log(i); //2

3.案例

  //函数作用域内的变量外部是无法访问的
   function foo() {
    
    
      // 函数作用域内var会使变量提升到函数最顶部
       var name = 'nick'
   }
   foo()
   console.log(name)   //会报错
   // 函数内声明相同的变量
   var name = 'nick';
   function foo() {
    
    
      var name = 'nancy';
      console.log(name);
   }
   foo(); // => 'nancy'
   console.log(name); // => 'nick'
    //在控制语句内声明的变量,在控制语句外面也可以使用
   if (true) {
    
    
       var a = 1
   }
   for (var i = 1; i < 10; i++) {
    
     }
   console.log(a, i);  // => 1  10

    // 在控制语句内声明一个与外部同名的变量。
   var b = 1;
   if (true) {
    
    
       var b = 10; // 与外部 x 变量同名
   }
   console.log(b); // => 10

猜你喜欢

转载自blog.csdn.net/m0_48076809/article/details/109018504
今日推荐