ES6
let 和 const 关键字
- let 和 const 的特点
相同点
:- 同一个变量名称不能重复声明
- 防止了变量提升,不会在预解析的时候解析
- 在{}(代码块)内部声明的变量,外部不能访问(具备块级作用域的特点)
不同点
:- let声明的值,可以被修改,可以是任意类型
- const的值不能修改,但是引用类型,可以修改它的属性和方法,不能修改类型和地址
对字符串的增强
- includes() 是否包含指定的字符串,存在返回true,不存在返回false
- repeat(n) 重复的次数
- startWith() 是否在开始位置
- endWith() 是否在结束位置
- padStart() es7 前面填充
- padEnd() es7 后面填充
- 字符串模版: `${变量名称}`
对数组的增强
- Array.from() 把伪数组转换成数组
- Array.of() 把一组值转换成数组
- find() 方法返回数组中满足提供的测试函数的第一个元素的值。
- findIndex( ) 在数组中找到对应元素的索引
对函数的增强(箭头函数)
- 箭头函数的this,它的this指向上下文对象 它本身没有this,利用call,bind,apply无法改变this指向
- 它默认情况是window(因为箭头函数的执行环境是全局的window)
- 它无法被实例化,不能被new
-注意点
-
- 可以小括号前面可以省略function关键字,小括号后面需要加上=>
const fn = ()=>{
console.log("我是箭头函数")
}
-
- 没有参数的时候()不能被省略,参数只有一个可以省略小括号
const fn = num=>{
console.log(num)
}
fn(num);
-
- 如果代码只有一句话,大括号和return都可以省略
const fn = num=>num;
console.log(fn)
- 4.当返回的是对象的时候,需要用()括起当成一个整体,不写小括号会被当成是=>{}
var fn3 = name => ({name:name})
对对象的增强
- 属性简写
var age = 20;
var sex = "男";
var obj = {
age,
sex
}
console.log(obj);
- 方法简写
var obj = {
// show:function(){
// }
show() {
}
}
- Object.assign() 对象的方法增加
var obj1 = { id: 1, name: "刘德华" }
var obj2 = { name: "留的", age: 1 }
//合并且替换
var obj3 = { ...obj1, ...obj3 }
console.log(obj3);
//合并返回新的对象
var obj4 = Object.assign({}, obj1, obj2)//obj1 和 obj2 没有变化
console.log(obj4);
var obj5 = Object.assign(obj1, obj2) //obj1变化了
console.log(obj5);
扩展运算符
-
ES6 里面号新添加了一个运算符 ... ,叫做扩展运算符
-
作用是把数组展开
let arr = [1, 2, 3, 4, 5]
console.log(...arr) // 1 2 3 4 5
- 合并数组的时候可以使用
let arr = [1, 2, 3, 4]
let arr2 = [...arr, 5]
console.log(arr2) //[1,2,3,4,5]
- 也可以合并对象使用
let obj = {
name: 'Jack',
age: 18
}
let obj2 = {
...obj,
gender: '男'
}
console.log(obj2)
- 在函数传递参数的时候也可以使用
let arr = [1, 2, 3]
function fn(a, b, c) {
console.log(a)
console.log(b)
console.log(c)
}
fn(...arr);// 等价于 fn(1, 2, 3)