let和var
Posted 我啊我
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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出来的是一个对象他的属性是可以更改的,别问为啥~
以上是关于let和var的主要内容,如果未能解决你的问题,请参考以下文章