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个设计缺陷