此文章主要是记录javascript中那些难以理解、迷惑、怪癖和易忽略的知识点。方便以后整理和学习。
typeof篇
- typeof null返回的结果是object。
- typeof Function返回的结果是function,不是object。
Undefined篇
var message; alert(message); alert(age)
声明未初始化的变量会被赋值undefined,没有声明而直接引用,将导致脚本错误。- 对未初始化的变量执行typeof操作将返回undefined值,而对未声明的变量执行typeof操作同样返回undefined值。
Null篇
- null表示空对象的引用,所以typeof null返回的值是object。
- 由于undefined派生于null,因此执行
undefined == null
是成立的。
Boolean篇
- 转型函数Boolean()可以将一个变量转换成布尔值,但是
!!变量名
可以更快的获取布尔值。
Number篇
- 判断一个数值是否是正负无穷,可以通过
isFinite()
函数判断。 - NaN表示非数值,NaN与任何值都不相等,包括NaN本身。例如
alert(NaN == NaN)
将返回false。 - 可以通过
isNaN()
函数来判断一个变量是否“不是数值”。
String篇
- EcMAScript中的字符串是不可变的,字符串一旦创建,他们的值就不能改变。要改变某个变量的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充。
- 数值、布尔值、对象和字符串都有toString方法,但是null和undefined没有这个方法。
- String()能够将任何类型的值转换为字符串,包括null和undefined。
操作符篇
- 逻辑非操作符可以将一个值转换为与其对应的布尔值,而同时使用两个逻辑非操作符,实际上就会模拟Boolean()转型函数的行为。
arguments篇
- arguments与数组类似,但是它却是一个对象的引用。
- arguments.callee用来引用当前的函数,用于处理递归非常使用。