1.let 和 var
- 局部作用域
let 声明的变量是具有块作用域的局部变量
var 声明的变量是全局变量
{
let a =5
var b=3
}
console.log(b);
console.log(a);
//3
//报错信息
- 变量提升
let 声明的变量只能在被定义后调用
var 声明的变量,在被定义前就能被调用,但值为undefined
console.log(c); //undefined
console.log(d); //报错
var c =10;
let d =20;
- 不允许重复声明
var a = 3
var a = 5 //无误
let a = 6
let a = 10 //报错
2.const
-
修饰值
常量的值不可变 -
修饰对象
对象的属性不变,但属性值可修改function getObject(){ return {name:"Bob"} } const p = getObject() p.name = "tom" console.log(p.name); //"tom"
3.模板字符串
支持换行,支持用${}嵌入变量
4.解构赋值 将多条赋值表达式缩为一条表达式
- 数组的解构赋值
let [a,b,c] = [1,2,3]
console.log(a,b,c);//1 2 3
[a,b] = [b,a]
console.log(a,b);//2 1
- 对象的解构赋值
let {name,age} = {age:10,name:"tieniu"}
console.log(name,age);//10 "tieniu"
- 解构赋值传参
let person ={name:"Bob",age:20,sexx:"w"}
//原始写法
function getName(obj){
return obj.name
}
//解构写法 {}代表一个对象,{name}表示传递实参为对象,但接收到的是解构后的name属性
function getName2({name}){
return name
}