很多新手在学习前端过程中,特别是javacript语言时同学们很难理解null和undefined,其实我们只要站在语言历史发展的角度,或者是作者设计的角度来看,问题看变得看简单了。
JavaScript历史
1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示"无"的值。根据C语言的传统,null被设计成可以自动转为0。
但是,JavaScript的设计者Brendan Eich,觉得这样做还不够,主要是因为JavaScript的数据类型被分成原始类型(primitive)和合成类型(complex)两大类(另外种说法就是基本类型和引用类型),null像在Java语言里一样,被当成一个对象,还需要一个东西来表示原始类型的"无"。
作者Brendan Eich觉得表示这个"无"的值最好不是对象。其次,JavaScript的最初版本没有包括错误处理机制,发生数据类型不匹配时,往往是自动转换类型或者默默地失败。Brendan Eich觉得,如果null自动转为0,很不容易发现错误。 因此,Brendan Eich又设计了一个undefined,Undefined类型只有一个值,即特殊的undefined
总结
null表示"没有对象",null值表示一个空对象指针, 比如要声明一个引用类型的变量,则可以使用var obj = null
反之则使用undefined,如不声明则默认undefined,如var a;