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