学习ES6知识点01

2019-07-08  本文已影响0人  laura520

例一:

{

    let a=10;

    var b=1;

}

console.log(a);

console.log(b);

结果:// Uncaught ReferenceError: a is not defined  ;在执行a 结果输出时代码已经报错,因此b的结果已经被组织,b不能输出结果;

原因:

1、ES6中let命令只在所在的代码块中有效,所以a会报错;

2、a不是undefined,因为let所声明的变量一定要声明后才能使用,否则就会报错,let不存在变量提升;

//var 的情况

console.log(foo); //输出undefined

var foo=2;

console.log(foo); //输出 2

"var 存在变量提升,在没有声明变量之前,变量值undefined";

//let 情况

console.log(bar);//报错Uncaught ReferenceError: a is not defined

let bar=3;

var 变量可以在声明之前使用,值为undefined,let 所声明的变量一定要在声明之后使用,否则会报错。

ES6的特性,不存在变量提升、let只有在代码块局部有效。

例二:

var tmp=123;

if(true){

    let tmp;

    tmp="abc";

}

console.log(tmp);   

结果:123;

原因:变量名相同,let的复制也不会影响到var的全局;let 只在代码块中有效。

let 声明的tmp,打印出来的是 abc

var 声明的tmp,打印出来的是123

var tmp=123;

if(true){

let tmp;

tmp="abc";

   console.log(tmp)  // abc

}

console.log(tmp);   //123

但是在同一代码块中不允许重复变量

function func01(){

 let a=12;

 var a=3;

}

function func02(){

 let a=12;

 let a=3;

}

以上代码块都会报错;

上一篇 下一篇

猜你喜欢

热点阅读