无论是let还是const,它们均解决了长久以来变量定义的问题,使用它们定义变量,具有以下特点:
-
全局定义的变量不再作为属性添加到全局对象中
-
在变量定义之前使用它会报错
-
不可重复定义同名变量
-
使用
const
定义变量时,必须初始化 -
变量具有块级作用域,在代码块之外不可使用
注意,在for循环中使用let定义变量,变量所在的作用域是循环体,因此在循环外不能使用。另外,for循环会对该变量做特殊处理,让每次循环使用的都是一个独立的循环变量,这可以解决JS由来已久的问题。
幂运算
2 ** 3 // 8
2 ** 4 // 16
字符串新增API
模板字符串
数组
对象--## 对象成员速写
const name = 'monica', age = 17;
const sayHello = function(){
console.log(`my name is ${this.name}`);
}
// 过去的方式
const user = {
name: name,
age: age,
sayHello: sayHello
}
// 速写
const user = {
name,
age,
sayHello
}
解构
const user = {
name: 'monica',
age: 17,
addr: {
province: '黑龙江',
city: '哈尔滨'
}
}
// 取出 user 中的 name 和 age
const { name, age } = user;
console.log(name, age); // monica 17
// 取出 user 中的 city
const { addr: { city } } = user
console.log(city); // 哈尔滨
// 取出数组每一项的值,分别放到变量a、b、c、d中
const [a, b, c, d] = arr;
// 仅取出数组下标1、2的值
const [, a, b] = arr;
// 仅取出数组下标1、3的值
const [, a, , b] = arr;
// 取出数组前两位的值,放到变量a和b中,剩下的值放到一个新数组arr2中
const [a, b, ...arr2] = arr;
// 箭头函数也可以在参数位置进行解构
const method = ({a, b}) => {
console.log(a, b)
}
const obj = {
a:1,
b:2,
c:3
}
method(obj); // 1 2