1.let
let声明的变量作用域只在当前代码块{}中有效
let声明变量不存在提升,因此必须先声明变量后使用,否则报错
let声明变量不能重复
2.const
const声明的其实是一个只读常量,即声明必须赋值,不可修改,如果const声明的是一个对象的话,可以修改对象的成员,不能重新赋值一个新的对象
3.解构赋值
3.1.解构赋值的作用
1.函数参数默认赋值
//引用自阮一峰es6入门教程
jQuery.ajax = function (url, {
async = true,
beforeSend = function () {},
cache = true,
complete = function () {},
crossDomain = false,
global = true,
// ... more config
} = {}) {
// ... do stuff
};
2.函数返回多个值
//引用自阮一峰es6入门教程
// 返回一个数组
function example() {
return [1, 2, 3];
}
let [a, b, c] = example();
// 返回一个对象
function example() {
return {
foo: 1,
bar: 2
};
}
let { foo, bar } = example();
3.交换变量
let [a,b] = [1,2];
[a,b] = [b,a];
4.提取json数据
//引用自阮一峰es6入门教程
let jsonData = {
id: 42,
status: "OK",
data: [867, 5309]
};
let { id, status, data: number } = jsonData;
console.log(id, status, number);
// 42, "OK", [867, 5309]
5.遍历map
for (let [k, v] of map) {
//...
}
4.字符串增强
1.字符串可使用for...of遍历
for(let o of "abcd"){
console.log(o)
}
2.模板字符串
可以在模板字符串中引用js变量
let name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`
3.新增方法
- fromCodePoint(0x20BB7) // 可以识别0xFFFF以上的Unicode编码
- includes():返回布尔值,是否包含子串。支持第二个参数,表示开始搜索的位置。
- startsWith():返回布尔值,是否以子串开头。支持第二个参数,表示开始搜索的位置。例如:"abcdefg".startsWith("cd",2) //返回true
- endsWith():返回布尔值,是否以子串结尾。支持第二个参数,表示开始搜索的位置。
- repeat(): 返回一个新字符串,表示将原字符串重复
n
次。例如:"abc".repeat(2); //"abcabc" - trimStart(): 去除字符串头部空格
- trimEnd(): 去除字符串尾部空格
- replaceAll(): 替换全部
5.数值扩展
5.1Number
Number.isFinite() Number.isNaN() 这两个方法只对数值有效
例如:
Number.isFinite('1'); //false
isFinite('1'); //true
ES6 将全局方法parseInt()
和parseFloat()
,移植到Number
对象上面,行为完全保持不变
Number.isInteger() 判断一个数值范围是否为整数
JavaScript 内部,整数和浮点数采用的是同样的储存方法,所以 25 和 25.0 被视为同一个值
Number.isInteger(25) // true
Number.isInteger(25.0) // true
Number.isSafeInteger() //(-2^53, 2^53) 不含端点,用来判断一个整数是否落在这个范围之内
5.2Math
Math.trunc方法用于去除一个数的小数部分,返回整数部分。
Math.trunc(2.2) // 2
Math.trunc('2.2') // 2
Math.trunc('') // 0
Math.trunc('a') // NaN
Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
Math.sign(-1) // -1 负数
Math.sign(1) // +1 正数
Math.sign(0) // +0
Math.sign(-0) // -0
Math.sign(NaN) // NaN
Math.cbrt()
方法用于计算一个数的立方根
对数运算
指数运算
双曲运算
5.3BigInt
长整数类型,没有长度限制
BigInt(22) //22n