JavaScript 易错知识点
数据类型
基本的数据类型
Undefined、Null、Boolean、Number、String 和 Symbol(ES6新增)
转化为布尔值时为false的6种情况:undefined、null、false、0、NaN、“”
会改变原数组的方法
1 pop() // 删除数组的最后一个元素并返回删除的元素。 2 push() // 向数组的末尾添加一个或更多元素,并返回新的长度。 3 shift() // 删除并返回数组的第一个元素。 4 unshift() // 向数组的开头添加一个或更多元素,并返回新的长度。 5 reverse() // 反转数组的元素顺序。 6 sort() // 数组的元素进行排序。 7 splice() // 插入、删除或替换数组的元素。
变量作用域
有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!
// 例
var a,b; (function(){ var a=b=3; // 相当于 b=3;var a=3 console.log(a) // 3 console.log(b) // 3 })(); console.log(a) // undefined console.log(b) // 3
call、apply、bind的区别
// 第一个参数 其余参数 效果
x.apply(thisArg, ?argArray) // 要指定的 this 原函数的参数数组 调用函数 x.call(thisArg, ...argArray) // 要指定的 this 原函数的参数们 调用函数 x.bind(thisArg, ...argArray) // 要指定的 this 原函数的参数们 返回函数
运算符优先级
>> From MDN 运算符优先级
隐式转换
>> 例
// 1
console.log([]==false) // true
// 2 var a = { a: 0, valueOf() { return ++this.a } } if (a == 1 && a == 2 && a == 3) { console.log(1); }
>> 上图来源:Oh My Dear JavaScript
一些参考
闭包
>> From MDN
闭包是函数和声明该函数的词法环境的组合。这个环境包含了这个闭包创建时所能访问的所有局部变量。
待续。。。