1:var
- 没有变量就去var一个,没有对象就去new一个
2:let
1:let和const是ES6中新增声明变量的关键字,
2:let声明的变量不会进行变量提升,
console.log(name) //name is not undefined
let name='张三'
3:let的声明方式和var基本上是一样的,一经声明不赋值输出undefined,后续可以对赋值进行改变.
let name='张三';
name='李四';
console.log(name) //李四
4:let和const声明变量变量命明具有唯一性,不能重复
let name='张三';
var name='李四';
console.log(name);//会报错
5:let声明的变量会形成一个块级作用域(也称为暂时性死区)
if(1==1){
var name='张三';
let letname='李四';
console.log(let) ;//输出''李四'';
}
console.log(name) //输出''张三'';
console.log(letname)//报错(letname is not defined))
var a=10;
function fn(){
console.log(a); //报错(let声明不会提升,一般a会输出10,但当前a和let a是一个整体
,let声明的变量不能再声明之前调用,会报错,所以称为暂时性死区)
let a =20;
}
fn() //报错
6:let和var有什么区别?
- :let声明变量不会变量提升,使用必须在声明之后
- :let声明变量变量名不能重复,否则报错
- :let会形成一个块级作用域
7:let和const有什么区别?
- let声明的值可以进行修改.const声明值一经赋值就不可再变
8:let会造成块级作用域小案例
3:const
- 1: const声明的是一个常量,变量一旦赋值,就不可以重新赋值,
/*const name='张三';
name='李四';//报错
console.log(name);//拨错*/
const obj={};
obj.name='张三';
console.log(obj.name)//输出张三
//obj存的是{}对象的地址,obj.name='张三修改的是obj下面的属性',obj的地址没变也没有重新赋值,所以不会报错.
- 2:const变量不能变量提升
console.log(name) //name is not undefined
const name='张三'
- 3:const声明变量变量名具有唯一性,不能重复
const name='张三';
const name= '李四' //会报错
示例