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

  1. 不适合开发大型项目程序,没有名称空间(namespace),很难模块化
  2. 非常小的标准库,能完成一些基本操作,很多功能都不具备
  3. null和undefined两者非常容易混淆,null属于对象(object)的一种,表示对象为空;undefined是一种数据类型,表示未定义
  4. 难以控制全局变量:任何一个函数内部都可以生成全局变量,大大加剧了程序的复杂性
  5. 若忘记写分号,解释器自动在行末插入分号,常常导致一些错误
  6. 加号运算符:“+”可以使两数相加,也可以链接字符串,数字与字符相加自动转换成字符,容易搞错,直接出个字符串运算符更加方便
  1. 1 + 2; // 3
  2. "1" + "2"; // "12"
  3. "1" + 2; // "12"
  1. NaN是一种数字,表示超出了解释器的极限。它有一些很奇怪的特性
  2. 数组和对象的区分:由于Javascript的数组也属于对象(object),所以要区分一个对象到底是不是数组,相当麻烦
  3. “==” 和 “===”:”==” 用来判断两个值是否相等,当两个值类型不同时,会自动转换。推荐任何时候都使用 “===”(精确判断)
  4. 基本类型的包装对象:Javascript的三种基本数据类型(字符串、数字和布尔值)都有相应的建构函数,可以生成字符串对象、数字对象和布尔值对象,容易造成混淆

参考:
维基百科
Javascript诞生记
Javascript的10个设计缺陷