ES6 let 与 const
let:声明的变量只在 let 命令所在的代码块内有效,只能声明一次,不存在变量提升。
const:声明一个只读的常量,一旦声明,常量的值就不能改变,若值为对象或数组,对象里面的属性和方法可修改,数组中的元素可修改,不会变量提升,必须先定义后使用,不许重复定义,遵循块级作用域。
ES6 Symbol
Symbol:
Symbol函数栈不能用 new 命令,因为 Symbol 是原始数据类型,不是对象,可以接受一个字符串作为参数。
作为属性名:
由于每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。Symbol 作为对象属性名时不能用.运算符,要用方括号。
ES6 Map 与 Set
一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
Map 中的键值是有序的(FIFO 原则),而添加到Object 中的键则不是。
Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
ES6 字符串
ES6 新增了子串的识别方法,三个方法只返回布尔值,传入了正则表达式而不是字符串,会抛出错误。
1、字符串的识别
ncludes():判断是否找到参数字符串。
startsWith():判断参数字符串是否在原字符串的头部。
endsWith():判断参数字符串是否在原字符串的尾部。
2、字符串重复
repeat():返回新的字符串,表示将字符串重复指定次数返回。
3、字符串补全
padStart():返回新的字符串,表示用参数字符串从头部(左侧)补全原字符串。
padEnd():返回新的字符串,表示用参数字符串从尾部(右侧)补全原字符串。
4、模板字符串
模板字符串相当于加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。
let string1 = `Hey,
can you stop angry now?`;
console.log(string1);
// Hey,
// can you stop angry now?
5、标签模板
alert`Hello world!`;
// 等价于
alert('Hello world!');
ES6 数值
二进制:前缀 0b 或 0B 。
八进制:前缀 0o 或 0O 。
Math 对象的扩展
Math.cbrt:用于计算一个数的立方根。
Math.imul:两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
Math.hypot:用于计算所有参数的平方和的平方根。
Math.clz32:用于返回数字的32 位无符号整数形式的前导0的个数。
Math.trunc:用于返回数字的整数部分。
Math.fround:用于获取数字的32位单精度浮点数形式。
Math.sign:判断数字的符号(正、负、0)。
Math.expm1:用于计算 e 的 x 次方减 1 的结果,即 Math.exp(x) - 1 。
Math.log1p:用于计算1 + x 的自然对数,即 Math.log(1 + x) 。
Math.log10:用于计算以 10 为底的 x 的对数。
Math.log2:用于计算 2 为底的 x 的对数。
双曲函数方法
Math.sinh(x):双曲正弦。
Math.cosh(x):双曲余弦。
Math.tanh(x):双曲正切。
Math.asinh(x):反双曲正弦。
Math.acosh(x):反双曲余弦。
Math.atanh(x):反双曲正切。
ES6 对象属性和方法简写
当对象的属性和值变量相同时,可简写
属性简写:
let age=9;
let num=2;
let obj={
age:age,
num:num
}
等价于:let obj={age,num};
方法简写:
let obj = {
say:function(){}
}
等价于:
let obj={
say(){};
}
ES6 ...展开运算符
展开运算符,把参数展开为用逗号分隔开的参数序列
1 数组展开
let arr1=[1,3,5];
let arr2=[4,5,6];
let arr=[
...arr1,
...arr2
]
2 对象展开
let obj1={
num:6,
age:9
};
let obj2 = {
name:”鲁迅”
};
let obj={
...obj1,
...obj2
}
或者
let obj=$.extend({},obj1,obj2);
运算结果:
obj={
num:6,
age:9,
name:”鲁迅”
}
ES6 数组解构赋值
数组解构,是根据左右两侧的变量与值的顺序一一对应起来的。
情况1:let[a,b]=[5,9];
等价于:
let a=5;
let b=9
情况2:let[a,b,c]=[2,,4];
等价于:
let a=2;
let b;//undefined
let c=4;
ES6 对象解构
对象解构,通过左侧变量名和右侧键名对应起来。
let{a,b}={
b:6,
a:”你好”
}
等价于
let a=”你好”;
let b=6;
ES6 箭头函数
箭头函数,是es6新增的一种函数定义方式,语法简洁,this指向明确。根据参数的不同,会有很多种写法:
1、没有参数的时候
var fn = ()=>{
}
若函数体只有一行代码,并且是返回值,则花括号可以省略。
var fn = ()=>5;
2、一个参数
语法1:
var fn=(a)=>{
}
语法2:小括号可省略
var fn = a =>{
}
3、多个参数
var fn = (a,b,c) =>{
}
ES6 promise
promise是es6新增的一个对象,它许诺未来会执行某个操作,它的出现是为了解决异步请求层层嵌套引起的地狱回调问题。
resolve:使状态走向成功,调用then方法;
reject:使状态走向失败,调用catch方法;
promise共有3个状态,分别是:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。
function getData(url){
return new Promise((resolve,reject)=>{
$ajax({
url:url,
success:r=>{
return resolve(r);
}
})
})
}
ES6 dos命令
1、如何进入dos窗口
win+r打开运行窗口;输入cmd,回车。
2、常用的dos命令
md:文件夹名,创建文件夹。
dir:列出当前目录下的所有文件、文件夹。
cd..:返回上层目录。
cd:文件夹名,进入指定文件夹。
cls:清屏。
磁盘名::进入指定磁盘根目录。
ES6 async 函数
1、async
async 是 ES7 才有的与异步操作有关的关键字。async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。
async function name([param[, param[, ... param]]]) {
statements
}
name:函数名称。
param:要传递给函数的参数的名称。
statements:函数体语句。
2、await
await 操作符用于等待一个 Promise 对象, 它只能在异步函数 async function 内部使用。
[return_value] = await expression;
expression:一个 Promise 对象或者任何要等待的值。
await针对所跟不同表达式的处理方式:
Promise 对象:await 会暂停执行,等待 Promise 对象 resolve,然后恢复 async 函数的执行并返回解析值。
非 Promise 对象:直接返回对应的值。