1994年网景公司(Netscape)发布了Navigator浏览器0.9版,网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。在这样需求迫切的背景下,1995年5月布兰登·艾克花了十天就设计出了简单的JavaScript 的原型。由于Java语言的火热,网景公司要求网页脚本语言与Java相似,希望是“简化的Java语言”。然而布兰登·艾克 并不是专业Java的语言开发者。JavaScript其实只是借鉴了Java的名字 和面向对象的思想,本质上与Java并无关系。Javascript同时结合了函数式编程和面向对象编程的特点。Javascript是唯一使用Prototype原型实现继承的语言。
由于JavaScript设计的过于仓促,也导致了这个语言有一些缺陷:
- 不适合开发大型程序
- 非常小的标准库
- null和undefined
null属于对象(object)的一种,意思是该对象为空
undefined则是一种数据类型,表示未定义
typeof null; // object
typeof undefined; // undefined
- 全局变量难以控制
- 自动插入行尾分号
- 作为弱语言 +号作为运算符,有两个含义,既可以表示数字与数字的求和,也可以表示字符与字符的连接
- NaN是一种数字,表示超出了解释器的极限
NaN === NaN; //false
NaN !== NaN; //true
alert( 1 + NaN ); // NaN
- 数组和对象的区分
数组也是对象的一种数组的--proto--指向Object的prototype - == 和 ===
==用来判断两个值是否相等。当两个值类型不同时,会发生自动转换
===用于判断严格等于 包括数据类型
"" == "0" // false
0 == "" // true
0 == "0" // true
false == "false" // false
false == "0" // true
false == undefined // false
false == null // false
null == undefined // true
" \t\r\n" == 0 // true
http://www.ruanyifeng.com/blog/2011/06/birth_of_javascript.html
http://www.ruanyifeng.com/blog/2011/06/10_design_defects_in_javascript.html