Solo  当前访客:0 开始使用

let和const --ES6特性学习笔记(一)


一、let

1、变量作用域

ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

eg1:

if(2>1){
  let b=1;
 var a = 1; 
}

console.log(a);//1
console.log(b);//ReferenceError: b is not defined

--let申明的变量在区块外部调用保错,b只在区块内生效

 

eg2:使用循环+延迟测试let作用域

for(var c = 0;c<2;c++){
  setTimeout(function(){
    console.log(c)
  },100) 
}
//打印出两个2

for(let c = 0;c<2;c++){
setTimeout(function(){
console.log(c)
},100)
}
//打印出0,1

--let在每次的for循环代码块内有效。var出的变量在全局范围内都有效

 

2、let变量提升?

console.log(e1)//undefined
console.log(e2)//ReferenceError: can't access lexical declaration `e2' before initialization

var e1 = 0;
let e2=1;

--e1的变量声明提升,输出undefined. e2则未被提升,输出需先定义

3、暂时性死区(在使用let、const声明的区块内,使用到这些命令什么的变量未被定义时会报错

eg:

var p1=1;

if(2>1){
p1 = 2; //ReferenceError: can't access lexical declaration `p1' before initialization
let p1;
}


--p1使用了let定义,不能在该区块先使用

4、同作用域重复申明错误

if(2>1){
  var p2 = 1;
  let p2 = 2;//SyntaxError: redeclaration of var p2
}

二、const(同java中final定义的变量

const声明一个只读的常量。一旦声明,常量的值就不能改变。

const具备和let1~4点相同的特性

1、const申明的变量需赋值

const p3;//SyntaxError: missing = in const declaration

p3 = 1

2、const申明的变量不能被修改

const p4 = 1;

p4 = 2;//TypeError: invalid assignment to const `p4'

 

 


标题:let和const --ES6特性学习笔记(一)
作者:hugh0524
地址:https://blog.uproject.cn/articles/2016/06/20/1466406834182.html

, , , , , 0 0