学习ES6的总结:
1. let、const、var的区别:
- let: (1)作用域: 块级作用域,声明在块级作用域内的变量,只在该块级作用域内有效。
(2)声明提升: 不允许在声明前 提前使用(变量提升)
(3)重复声明:在同一作用域内不允许重复声明同一个变量,否则会抛出SyntaxError错误
(4)重新赋值:重新赋值会重新复制一份新的变量。
- const: (1)作用域: 块级作用域,声明在块级作用域内的变量,只在该块级作用域内有效。
(2)声明提升: 不允许在声明前 提前使用(变量提升)
(3)重复声明:在同一作用域内不允许重复声明同一个变量,否则会抛出SyntaxError错误
(4)重新赋值:一旦赋值后,其值就不能被重新赋值
(5)常量: 常量的值不能被修改,只能赋值一次。
- var: (1)作用域:拥有函数作用域或全局作用域。无论变量在何处声明,都会被视为声明在其所在 的函数内部,如果不在函数内部,则视为全局变量
(2)声明提升:会被提升到其作用域的顶部,这意味着无论变量在何处声明,它都会被视为在 作用域的最开始处声明
(3)重新声明: 允许在同一个作用域内重复声明同一个变量,但后面的声明会覆盖前面的声明
(4)重新赋值:重新赋值会重新复制一份新的变量
2.对数组的解构以及赋值:
对数组解构:const names=['蔡徐坤','范丞丞','朱正廷','陈立农']
let [a,b,c,d]=names;
console.log(a)
console.log(b)
console.log(c)
console.log(d)
对对象解构:const goods={
name:'苹果',
sal:10,
message:function(){
console.log('这是一个苹果')
}
}
let {name,sal,message}=goods;
console.log(name)
console.log(sal)
message()
3.模板字符串:
创建字符串的方式: 1. 单引号 2. 双引号 3. 反引号` `字符串中可以插入变量,变量可以用${} 包裹
4. 箭头函数的声明以及基本语法结构:
(1)箭头函数的声明:箭头函数使用=>声明
(2)基本语法结构: 函数名 (参数)=>{函数体}
(3)this的绑定:箭头函数没有自己的this,它的this绑定的是外层作用域的this。
(4)不能用作构造函数:由于箭头函数不绑定自己的this,因此它们不能用作构造函数(即不能 new 关键字)
(5)适用于回调函数和计时器
5.函数的参数设置:
(1)对函数参数解构:
function getConnection(host,username,password,pord="3307"){
console.log(host)
console.log(username)
console.log(password)
console.log(pord)
}
getConnection({host:"localgost",username:"root",password:"123456",pord:3306})
(2)支持rest参数:
rest参数必须作为最后一个参数,它代表了所有剩余的参数
function myFunction(a, ...rest) {
........
}
(3)arguments对象:是一个类数组对象,包含了传递给函数的所有参数
function date(){
console.log(arguments)
}
date('蔡徐坤','陈立农','范丞丞','朱正廷')
输出:Arguments(4) ["蔡徐坤", "陈立农", "范丞丞", "朱正廷"]
6.Symbol:
Symbol是ES6提供的新的数据类型,是在es5的6种数据类型的基础上增加的第7种数据类型
es5的6种数据类型
string number boolean Ogject undefined null
es6的新数据类型
Symbol
特征:
Symbol是不可改变且唯一的,可以防止变量名冲突
Symbol不能与其他数据类型进行运算,但是可以和Symbol进行比较
Symbol定义的对象属性,无法使用for循环遍历
其他: Ogject.assign():
Object.assign():方法是浅拷贝,如果属性值是对象,则只拷贝引用地址,不 会拷贝对象本身
Object.getOwnPropertySymbols():
getOwnPropertySymbols获取对象中Symbol修饰的属性列表
7.迭代器:
迭代器是一种接口,用来访问集合对象的元素,迭代器对象可以用来遍历数组或者其他类似集合的对象。
例如 const obj1={
name:"小强",
like:[
"吃饭",
"玩游戏",
"旅游",
"篮球",
"足球"
],
[Symbol.iterator](){
let index=0;
let _this=this;
return {
next:function(){
if(index<_this.like.length){
const result={value:_this.like[index],done:false}
index++;
return result;
}else{
return {value:undefined,done:true}
}
}
}
}
}
for(let v of obj1){
console.log(v)
}
依次打印 "吃饭", "玩游戏", "旅游", "篮球", "足球"