let和var

1.let  对比 var

let的作用域是块,而var的作用域是函数

var a=5;
var b=10;
if(a===5){
      let a=4;//the scope is inside the if-block
      var b=1;//the scope is inside the function
      console.log(a);//4
      console.log(b);//1
   }
console.log(a);//5
console.log(b);//1

 

2.let 在循环中

可以用 let 来代替 var ,在 for 定义块中使用块级变量.用let定义的变量,只在for循环和if循环中,出了循环内存中就不存在了而用var定义的始终存在于内存中。

//例如1
for(let i=0;i<10;i++){
     console.log(i);//0,1,2,3,4,5,....9
    }
console.log(i);//i is not defined
//例如2
function varTest(){
       var x=1;
       if(true){
            var x=2;//同样的变量
            console.log(x);//2
              }
       console.log(x);//2
    }
function varTest(){
       var x=1;
       if(true){
            let x=2;//不同的变量
            console.log(x);//2
              }
       console.log(x);//1
    }

 

3.let块let block)

var x=5;
var y=0;
let(x=x+10,y=12){
      console.log(x+y);//27
    }
console.log(x+y);//5

下面的运行结果是?

1 for(let i=0;i<12;i++){}console.log(i);//i not defined 
2 const a=12;a=13;console.log(a); //TypeError 

3 const g={b:3};console.log(g.b); g.b=12; console.log(g.b); //3,12

4 let [head,...tail]=[1,2,3,4];console.log(tail);//[2,3,4]
1.let 与var不同,存在块级作用域,在for循环中声明,循环之外销毁 所以 i not defined
 
2.const 声明一个常量无法更改,所以TypeError
 
3.const 声明的是一个常量所以是无法更改的
1
2
3
4
const a={x:1};
     console.log(a.x);
     a.x=5;
     console.log(a); //Object {x: 5}
 在这里打印出来 a 是一个对象 且他的属性x 的值为5,但是!!如果const出来的是一个对象他的属性是可以更改的,别问为啥~
-------------------------------------------------------------------------------------------------------------------------------------------------------
使用var要注意的:
(function() {
       var a = b = 5;
   })();   
console. log (b);//5
console. log (a);//undefined
1.var操作符
使用var操作符定义的变量将成为该变量的作用域中的局部变量,如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁;
省略var操作符会创建一个全局变量,但在局部作用域中定义的全局变量很难维护,也会由于相应变量不会马上就有定义而导致不必要的混乱,给未经声明的变量赋值在严格模式下会导致抛出Reference错误,所以不推荐使用。
function noVar(){
message="global var";//全局变量
}
noVar();
console.log(message);
2.解析
var a=b=1;>> var a=b;b=1;
首先使用var初始化变量a赋值为b,b未定义,a=undefined;省略var初始化变量b为全局变量,b=1。

 

转载于:https://www.cnblogs.com/aixiuxiu/p/6539151.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值