javascrip变量作用域

xiaoxiao2021-02-28  118

本文和大家分享的主要是javascript 中变量作用域相关内容,一起来看看吧,希望对大家 学习javascript有所帮助。   1. var 声明的变量是有作用域的 , 比如我们在函数中用  var  声明一个变量   1 'use strict';2 function num(){3   // var 声明一个变量 num14    var num1 = 15;5 }   函数中声明了一个变量 num1 , js 函数中用  var  声明变量实际上就声明了一个局部变量。局部变量就是在  外部访问不到  只能在  函数内部访问    1  'use strict';2  function num(){3    // var 声明一个变量 num14     var num1 = 15;5  }6  alert(num1);//num1 is not defined   2. 在函数外定义变量的情况   var num1 = 15;//var 声明变量   alert(num1);//15   function add(){   alert(num1+5);   }   add();//20   不在函数中定义的变量是全局变量, 全局变量就是在任何地方都可以访问到   3. 不使用  var  的情况   js 允许变量不用声明就可以使用 , 不用 var 自动就是全局变量   num1 = 15;   alert(num1);//15   * 但你最好不要这样做 , 如果引入多个 js 文件里面都有一个不用 var 声明的全局变量会污染全局 ,bug 也不容易排查。使用严格模式 ‘use strict’ 则可避免这种情况   ‘use strict’;   num1 = 15;//ReferenceError: num1 is not defined  会报错   4. 两个函数内的变量互不影响   function num1(){   var age = 15;   alert(age);   }   num1()//15   function num2(){   var age = 16;   alert(age);   }   num2();//16;   函数内嵌套: 内部函数可以访问外部函数的变量 , 而外部函数访问不了内部函数   function num(){   var age =15;   function num1(){   var s = age+10;   alert(s);//25   }   alert(s+2);// 会报错   }   如果是函数内的变量是重名的情况   function num(){   var age = 15;   function num1(){   var age =20;   alert(age);//20   }   alert(age);//15   num1();   }   num();   说明函数是从内而外查找的, 当内部函数发现与外部函数重名就会自动屏蔽掉外部函数。   5. 变量提升   变量可以先使用后声明   function num(){   y = 5;   alert(30+y);   var y;   }num();//35   对于上述函数num()javascript 引擎看到的是   function num(){   var y;   y =5;   alert(30+y);   }   只能对变量提升, 变量初始化不可以提升   function num(){   var y=5;   alert(y+x);   var x  = 30;   }   num();//NaN   要养成在函数中顶部先声明变量的好习惯!   在上面也说过了全局变量的概念    不在任何函数内定义的变量就是全局变量   js 默认有一个全局对象 window, 全局作用域下的变量都是绑定到 window 的一个属性。   var  num = 15;   alert(num);//15   alert(window.num)//15 来源: 博客园
转载请注明原文地址: https://www.6miu.com/read-26320.html

最新回复(0)