《JavaScript高级程序设计》第三版 笔记
3.1.1 区分大小写
ECMAScript中的一切(变量、函数名和操作符)都区分大小写。
example:变量test和变量Test分别表示两个不同的变量。
3.1.2 标识符
标识符:
指变量、函数、属性的名字,或者函数的参数。
标识符命名规则:
由字母、数字、下划线(_)或美元符号($)组成,但首字符不能为数字。
不能把关键字、保留字、true、false和null用作标识符。
格式:
常采用驼峰大小写格式,这样可以与ECMAScript内置的函数和对象命名格式保持一致。
3.1.3 注释
// 这是一个单行注释
/*
这是
一个
块级注释
*/
3.1.4 严格模式
顶部添加 “use strict”; (这行代码为编译指示,用于告诉支持的JavaScript引擎切换到严格模式)的脚本或函数,表示启用严格模式。
支持严格模式的浏览器:
IE 10+、Firefox 4+、safari 5.1 +、Opera 12+ 和 Chrome。
3.1.5 语句
语句以分号结尾。
如果省略分号,则由解析器确定语句的结尾。
为什么不推荐省略分号?
1.加上分号可以避免很多错误(例如不完整输入);
2.代码行结尾处没有分号会导致压缩错误;
3.增进代码性能,解析器不必再花时间推测应该在哪里插入分号。
代码块
example:
if (test)
alert (test); //有效但容易出错,不推荐使用
if (test) { //推荐使用
alert(test);
}
3.2 关键字和保留字
关键字
ECMA-262描述了一组具有特定用途的关键字。
用于表示控制语句的开始或结束,或者用于执行特定操作等。
不能用作标识符。
在实现ECMAScript 3 的JavaScript引擎中使用关键字做标识符,会导致 “Identifier Expected” 错误。
使用保留字做标识符可能会导致相同的错误,具体取决于特定的引擎。
关键字
break case catch continue debugger default delete do else finally for function if in instanceof new return switch this throw try typeof var void while with
保留字(ECMA-262第3版定义的全部保留字。保留字即目前还没有特定用途,但将来可能被用作关键字)
abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile
第5版在非严格模式下运行的保留字缩减为:
class const enum export extends import super
第5版在严格模式下增加以下保留字:
implements interface let package private protected public static yield eval arguments
3.3 变量
变量:
ECMAScript的变量是松散类型的,即可以用来保存任何类型的数据。
每一个变量仅仅是一个用于保存值的占位符而已。
声明变量:
var操作符(var是一个关键字)后跟变量名(即一个标识符)。
example:
var message;
这行代码定义了一个名为message的变量。
该变量可以用来保存任何值。
未经过初始化的变量,会保存一个特殊的值—undefined。
给未经声明的变量赋值在严格模式下会导致抛出 ReferenceError 错误。
声明并初始化变量
example:
var message = “hi”; //像这样初始化变量并不会把它标记为字符串类型,初始化的过程就是给变量赋一个值。
var message = “hi”,
found = false,
age = 29; //可以使用一条语句定义多个变量,每个变量(初始化或不初始化均可)用逗号分隔开。
全局变量
在全局作用域中使用var操作符定义的变量。
在局部作用域中不使用var操作符定义的变量。
位于函数中的全局变量,只要调用过一次函数就有了定义,可以在函数外部的任何地方被访问到。
为什么不推荐在块级作用域中省略var操作符定义全局变量?
1.很难维护;
2.由于相应变量不会马上就有定义而导致不必要的混乱。
局部变量
在局部作用域中使用var操作符定义的变量。
当函数被调用时,就会创建局部变量并为其赋值。
当函数退出时,局部变量就会被销毁。