for 循环 if条件中,定义的var 外部可以访问。定义的let const外部无法访问(ES6+)。
引用清除法,该内存没有引用者则回收(嵌套引用无法回收)。
标记清除法,由上到下将用到的内存标记,未使用的清除。
arguments.length 只能在函数中使用,得到一个参数的伪数组。
注释:箭头函数没有动态参数
在函数的最后一个形参定义为... 例如 function fn1(参数1,参数2, ...参数3)
展开运算符,let a = [1,2,3,4]; console.lot(a) 输出 1 2 3 4
let fn = () => { 语句... } // 以 () => { } 的形式定义箭头函数
let fn = (参数1, 参数2) => { 语句... } //箭头函数的形参写在括号中
注释:参数只有一个时,小括号可以省略。例如 let fn = 参数 => { 语句 }
let fn = (x, y) => { 函数体 }
注释:函数体只有一行代码可以省略大括号。例如 let fn = (x, y) => console.log(x+y)
let fn = (x, y) => { return x+y }
注释:函数体只有一行代码可不写return 关键字。例如 let fn = (x,y) => x + y
注释:返回对象类型无法识别大括号需要给对象加小括号:例如 let fn = x => ({name:...})
方式1: Object o = { ...obj} // 相当于将obj展开,重新定义给o
方式2:Object.assign(o, obj) // 将obj的属性加到o中,会保留o中原有的非重复属性。
方式1:递归,用for in 循环 Array 或 Object。当对象属性 instanceof Array 或 Object时
初期化数组 [ ] 或 对象 { } 然后递归调用函数。
方式2:引入第三方库 lodash, 用 _.cloneDeep(obj) 实现深拷贝
方式3:先将对象转成字符串 let str = JSON.stringify(obj);
再将字符串转成对象 let o = JSON.parse(str);