一、let的声明:
let a;
let b =46;
let c ='xiguabuaimeizi';
let d =["xiguabuaimeizi"]
(1)该变量不能重复声明:
let first = 'xiguabuaimeizi' let first ='zbj'
重复声明则会报错
但在var中却不受影响
(2)在块级作用域中的区别:
let在块级作用域中受影响,比如:
{
let first ="xiguabuaimeizi"
}
console.log(first)
这里已经在{}外面调用,则会报错,只有在{}里面才不会报错,
但用var则不受影响,在es5中并没有块级作用域这一用法,let在作用域链上可以正常使用:
{
let first ='hhh'
function f (){
console.log(first)
}
}
f()
这里调用不受作用域的影响
(3)let也没有var的变量提升: 在var中则可以变量提升:
console.log(first)
var first ='hahaha'
这样是可以正常使用的,只是会报underfined,而let则会报错
二、const:
(1)const必须要赋值,不然报错
const First;(会报错)
const First='hhh'(正常使用)
(2)需要注意:const xxx声明的xxx最好要大写,但没有强制性要求;
const FIRST='kkk'
(3)常量不能修改,需要修改则用let:
const first ='kk'
first='hh'(这样会报错)
但如果在对象和数组中修改值,则不会报错:
const arr=['dd','gg','ss']
arr[0]='kk'
这样不会报错,他只是改变数组里面的局部而已
(4)块级作用域:
const在块级作用域中受影响,比如:
{
const first ="xiguabuaimeizi"
}
console.log(first)
这里已经在{}外面调用,则会报错,只有在{}里面才不会报错