JavaScript概论
- 完整的JavaScript包括以下几个部分:
- ECMAScript:描述了该语言的语法和基本对象
 - 文档对象模型(DOM):描述处理网页内容的方法和接口
 - 浏览器对象模型(BOM):描述与浏览器进行交互的方法和接口
 
 - JavaScript的基本特点为:
- 一种解释性脚本语言(代码不进行预编译)。
 - 主要用来向HTML页面添加交互行为。
 - 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
 
 - JavaScript常用来完成以下任务:
- 在HTML页面中嵌入动态文本
 - 对浏览器事件作出响应
 - 读写HTML元素
 - 在数据被提交到服务器之前验证数据
 - 检测访客的浏览器信息
 - 控制cookies,包括创建和修改等
 
 
JavaScript历史
- 1995年  网景招募了布兰登·艾克,艾克在1995年5月花了十天时间就把原型设计出来,网景为了让这门语言搭上Java这个编程语言“热词”,将其改名为JavaScript
 - 1996年8月,IE3发布,微软发布JScript,浏览器大战开始
 - 1996年11月,网景向ECMA(欧洲极端及制造商协会)提交语言标准
 - ECMAScript标准的制定:
- 1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准,第一版发布
 - 1999年12月,第三版发布,该版本使用最广
 - 第四版流产
 - 2009年12月,第五版发布
 - 2015年6月,第六版发布,新浏览器都支持
 - 之后每年发布一版,版本号以年份命名
 
 
JavaScript的10个设计缺陷
- 不适合开发大型项目程序,没有名称空间(namespace),很难模块化
 - 非常小的标准库,能完成一些基本操作,很多功能都不具备
 - null和undefined两者非常容易混淆,null属于对象(object)的一种,表示对象为空;undefined是一种数据类型,表示未定义
 - 难以控制全局变量:任何一个函数内部都可以生成全局变量,大大加剧了程序的复杂性
 - 若忘记写分号,解释器自动在行末插入分号,常常导致一些错误
 - 加号运算符:“+”可以使两数相加,也可以链接字符串,数字与字符相加自动转换成字符,容易搞错,直接出个字符串运算符更加方便
 
1 + 2; // 3"1" + "2";  // "12""1" + 2;   // "12"
- NaN是一种数字,表示超出了解释器的极限。它有一些很奇怪的特性
 - 数组和对象的区分:由于Javascript的数组也属于对象(object),所以要区分一个对象到底是不是数组,相当麻烦
 - “==” 和 “===”:”==” 用来判断两个值是否相等,当两个值类型不同时,会自动转换。推荐任何时候都使用 “===”(精确判断)
 - 基本类型的包装对象:Javascript的三种基本数据类型(字符串、数字和布尔值)都有相应的建构函数,可以生成字符串对象、数字对象和布尔值对象,容易造成混淆
 
参考:
维基百科
Javascript诞生记
Javascript的10个设计缺陷