javascrip变量作用域

本文详细解析了JavaScript中变量作用域的概念,包括局部变量、全局变量的区别,未使用var声明变量的影响,以及变量提升等特性。
本文和大家分享的主要是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

来源: 博客园
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值