第一章 JavaScript简介
1、 JavaScript与ECMAScript的关系:早期,Netscape Navigator和微软(微软的为JScript)都有其各自的JavaScript实现,这意味着有两个不同的JavaScript版本,随着业界担心的日益加剧,JavaScript的标准化被提上议事日程。欧洲计算机协会制造商(ECMA)召集各公司优秀程序员,制定了DCMA-262——名为ECMAScript的新脚本语言标准。
2、JavaScript的实现
由下列三个部分组成:
a:核心(ECMAScript)
b:文档对象模型(DOM)
c:浏览器对象模型(BOM)
JavaScript的这三个组成部分,在当前五个主要浏览器(IE、Firfox、Chrome、Safari和Opera)中都得到了不同程度的支持。其中所有浏览器对ECMAScript第3版的支持大体上都还不错,而对ECMAScript5的支持程度越来越高,但对DOM的支持则彼此相差比较多。对已经正式纳入HTML5标准的BOM来说,尽管各浏览器都实现了某些众所周知的共同特性,但其他t特性还是会因浏览器而异。
第二章 在HTML中使用JavaScript
1、把JavaScript插入到HTML页面中要使用<script>元素。使用这个元素可以把JavaScript嵌入到HTML中(方法一),还可以包含外部的JavaScript文件。
2、在包含外部的JavaScript文件,src指向文件的URL,可以是同一个服务器的文件,也可以是外域的文件。
3、传统的做法一般把所有<script>元素都放在页面的<head>元素中,对于需要很多的JavaScript代码的页面来说,可能会导致页面出现延迟,为了避免这个问题,现代的 web应用程序,一般都把全部JavaScript引用放在<body>元素中页面的后面,如下:
<html> <head> ...... </head>
<body> HTML代码 JavaScript代码<script type = "text/javascript" src="example.js"></script>...
</body> </html>
4、defer属性和async属性,可控制脚本的显示时机。
第三章 基本概念
本章介绍JavaScript基本语法,由于比较简单,下面列出一些不熟悉的和易错点:
1、ECMAScript的变量是松散类型的,可以保存任何类型的数据(Undefined、Null、Boolean、Number、String、Object),每个变量仅仅是一个占位符而已。
2、typeog操作符可检测变量的数据基本类型,instanceof可检测引用类型。
3、JavaScript浮点类型,采用IEEE754标志,有一个通病会产生误差,所以永远不要测试某个浮点数的数值,如 var a =0.1; var b=0.3; a+b==0.3结果为false。
4、with语句是将代码作用域设置到一个特定的对象中。大量使用with语句会降低性能,开发中不建议使用。
5、函数可以有返回值也可以没有,建议有返回值时保持函数一直有,没有时保持函数一直没有,便于维护。函数的参数在内部是用一个数组来表示的(arguments,可通 过数组下标访问),所以命名参数只是提供便利,不是必须的,所以函数没有传统意义上的重载。
第四章 变量、作用域和内存问题
1、基本类型和引用类型的值:
基本类型的赋值是按值传递,被赋值的变量会重新开辟一个新的内存空间,在把值写进去,而对引用进行赋值,虽然会重写开辟内存空间,但只把引用的地址复制了 一遍,两个变量指向内存中的同一个对象。
2、传递参数:按值传递,基本数据类型,把值复制个参数,形参的改变对实参无影响,引用传递把引用的值复制给形参,实参和形参指向同一个对象。
3、作用域:JavaScript没用块级作用域,for(var i=0;i<10; i++); 即使在for循环执行结束,变量i也依旧会存在于循环外部的执行环境中。
4、查询标识符会从作用域的前端开始,向上逐级查询与给定的名字匹配的标识符。
5、垃圾收集(一般有两种方法):标记清除法(现在各浏览器基本使用此方法)、引用计数法(存在循环引用的问题,现在基本不采用)。
6、程序员可通过解除引用来管理内存(让垃圾收集器自动回收)。