解构赋值分类: 数组解构赋值,对象解构赋值,字符串结构赋值
新的变量声明方式 let/const 特点 提供了块级作用域
不再具备变量提升
let来声明一个值会被改变的变量
const来声明一个值不会被改变的变量,也可以称之为 常量
2.箭头函数的使用
当函数直接被return时,可以省略函数体的括号 return aa; //aa()
箭头函数可以替换函数表达式,但是不能替换函数声明
箭头函数中,没有this - 在es6中,会默认采用严格模式
因此this也不会自动指向window对象了,而箭头函数本身并没有this,因此this只能是undefined
模版字符串 使用“将整个字符串包裹起来,而在其中使用${}来包裹一个变量或者一个表达式
例子 const string = ‘ ${a}+${b} = ${a+b}’;
编译结果: var string = a + “ +” +b+”=“+(a+b);
解析结构 es6 const { loading, clicked } = props;
es5 var loading = props.loading;
var clicked = props.clicked
函数默认参数
展开运算符 在es6中 用。。。来表示展开运算符, 它可以将数组方法或者对象进行展开
例子 const arr1 = [1, 2, 3];
const arr2 = […arr1, 10, 20, 30];
arr2就变成了[1,2,3,10,20,30];
对象字面量与class 属性与值的变量同名时 // es6
const person = {
name,
age}
// es5 var person = {
name: name,
age: age}
除了属性之外,对象字面量写法中的方法也可以有简写方式
class (详细学习)
promise (详细学习)
模块Modules (详细学习)
es6中声明变量
let [a, b, c] = [1, 2, 3] // 模式匹配
let [head, …tail] = [1, 2, 3, 4]
head // 1
tail // [2, 3, 4] … 代表数组
如果解构不成功,变量的值就等于undefined
冲突,依赖
master merge到自己的分支,提交之后,再从自己分支merge到master,不然有可能丢失master的信息
高级阶段: 通过方法类,域等对function进行分割
当一个JS文件里面有100多个方法的时候,这个时候看代码其实挺难过的,如果能把里面的function进行分分类是不是就清楚很多,好比,这几个方法是注册时check用的,这个几是对字符串的验证用的等等。
<script type="text/javascript">
function register(){
this.check_username = function(){
if(document.getElementById("username").value == ""){
alert("用户名不能为空");
}
}
this.check_password = function(){
if(document.getElementById("password").value == ""){
alert("用户名不能为空");
}
}
}
new register().check_username(); //调用方法
</script>
let const class extends super arrow functions template string restructuring default
rest arguments es5没有块级作用域 const 来声明可以避免未来不小心重命名而导致出现的bug
const moment = require(‘moment’);
function (i) { return i+1}
(i)=>i+1
函数参数默认值
function animal(type=“cat”){
console.log(type)
}
函数参数数量可变
function animals(…types){
console.log(types)
}
animals(‘cat’, ‘dog’, ‘fish’)
pc端 前端小i问答(语音转汉字,汉字转语音)
import(引入)
动态参数
参数扩展(可变参数),数组扩展(数组合并)
es5设置对象只读属性
对代理对象进行操作,控制对象属性只读
for(var i or m){
console.log(i)
}
三个. 数组解构
[…arr1, …arr2] 数组合并
promise .then 的方式连续调用多个方法
promise.all([login(), getInfo()]).then(([res1, res2]) =>{
})
AMD CMD 模块化开发的概念
AMD是requirejs在推广过程中对模块化定义的规范化产出,异步模块定义,requirejs 国外
CMD是Seajs在推广过程中对模块化定义的规范化产出,同步模块定义,seajs淘宝团队
node 端推荐使用common js 规范 export import
es6 中export/import 必须成对出现
都是模块化开发的解决方案
vue-lazyload 实现图片懒加载
es6默认参数
let 只在块作用域中有效
const 声明时必须赋值
const 数值不允许修改,const 对象允许修改
symbol 概念 不重复,不相等
symbol
for(let [key, value] of Object.entries(obj)){
console.log(‘let of’, key, value)
}
es6中新增加的对象
reflect.ownKeys(obj)
let arr = [1, 2, 3]
let list = new Set(arr)
list.has(1) list.delete(1)
set做数组去重
let arr = [‘123’]
new Map().set(arr, 456)
map 做映射key-value
// 查
map.has(’t’)
array.find(item=>item.t)