JavaScript的诞生
- JavaScript(通常缩写为JS)是一种高级的、解释型的编程语言。
- 网景公司由于开发需求,与Sun公司结成联盟。共同将JavaScript推入市场
- 1995年5月网景公司指定Brendan Eich设计出一款“简化版Java”,十天后JavaScript出世。
- JavaScript结合C语言,java,Self以及Scheme等编程语言的一些特点。是一门基于原型,头等函数的语言。支持面向对象程序设计,指令式编程以及函数式编程。
- 1996年11月,网景正式向ECMA提交语言标准,次年六月发布第一款JavaScript标准规范ECMA-262。
JavaScript概论
- 主要内容
- ECMAScript,描述了该语言的语法和基本对象
- 文档对象模型(DOM),描述处理网页内容的方法和接口
- 浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口
- 基本特点
- 是一种解释性脚本语言(代码不进行预编译)
- 主要用来向HTML页面添加交互行为。
- 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
- 常用任务
- 嵌入动态文本于HTML页面
- 对浏览器事件作出响应
- 读写HTML元素
- 在数据被提交到服务器之前验证数据
- 检测访客的浏览器信息
- 控制cookie,包括创建和修改等
JavaScript的设计缺陷
-----摘抄阮一峰老师的博文《Javascript的10个设计缺陷》
- 设计不够完善,设计过于仓促,无先例,过早标准化
- null和undefined:null属于object,表示对象为空。undefined属于数据类型,表示未定义。
- 加号运算符的界定性弱,若只有一方加数为字符串,那么另一方会被执行ToString,结果返回一个字符串。
console.log(1+"10"); // "110" console.log("10"+1); // "101" - NaN表示超出解释器的极限,但并不好定义
NaN === NaN; //false
NaN !== NaN; //true
console.log( 1 + NaN ); // NaN
- ==和===:==用于判断值是否相等,===同时判断值和类型是否相等。(任何时候都推荐使用“===”)
"" == "0" // false
0 == "" // true
0 == "0" // true
false == "false" // false
false == "0" // true
false == undefined // false
false == null // false
null == undefined // true
- JavaScript中函数的数据类型是object
- JavaScript中数组也属于对象,因此要区分一个对象是否为数组十分麻烦。
if ( arr &&
typeof arr === 'object' &&
typeof arr.length === 'number' &&
!arr.propertyIsEnumerable('length'))
{
console.log("arr is an array");
}