es5,es6新增方法与函数进阶

87 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情

ES5 新增方法

forEach() map() filter some() every()

在 forEach 里面 return 不会终止迭代

在 some 里,遇到 return true 就是终止遍历,迭代效率更高

 

tirm 去除左右两侧的空格

 

Object.keys(obj) 用于获取对象自身所有的属性

Object.defineProperty() 定义新属性或修改原有的属性

writable:false 是否可以重写

enumerable 为 false 不允许遍历

configurable: 为 false 则不允许删除这个属性,不允许再修改第三个参数里的特性

Object.defineProperty(obj, 'name', {

value: '1000'

})

Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象,它将返回目标对象

 

函数进阶 利用 new Function() 函数也是对象

var f = new Function();

 

立即执行函数 自动调用

(function() {

console.log('自己调用');

})();

改变函数内部的 this 指向

call() apply() bind()

严格模式 'use strict'

严格模式下全局作用域中的函数中的 this 指向 undefined

 

高阶函数-函数可以作为参数传递(回调函数)

闭包:有权访问另一个函数作用域中变量的函数

简单理解就是一个作用域可以访问另一个函数内部的局部变量

闭包的作用:延伸了变量的作用范围 避免全局变量污染

 

递归函数:函数内部自己调用自己,这个函数就是递归函数

 

递归里必须加退出条件

es6

 

let 声明的变量具有块级作用域, 不存在变量提升 暂时性死区特性

const 具有块级作用域, 声明常量必须赋初始值(值不能修改)

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情 解构赋值

数组解构 允许我们按照一一对应的关系从数组中提取值,然后将值赋值给变量(没有对应值为 undefined

let arr = [1,2,3];

let [a,b,c] = arr;

 

对象解构 允许我们使用变量的名字匹配对象的属性 匹配成功将对象属性的值赋值给变量

let person = {name: 'lisi',age:30};

let {name, age} = person

let {name: mName,age: myAge} = person;

 

箭头函数 用来简化函数定义语法

const fn = () => {}

箭头函数不绑定 this 关键字,箭头函数中 this,指向的是函数定义位置的上下文 this

剩余参数 ...args