《JavaScript高级程序设计》读书笔记-3.1语法

1. 区分大小写

2.标识符

标识符指变量、属性、函数的名字,以及函数的参数。

  • 标识符组成规则:
    • 第一个字符必须是一个字母、下划线_或美元符号$
    • 其他字符可以是字母、数字、下划线_或美元符号$
    • 最好采用驼峰大小写格式
    • 不能把关键字、保留字、true、false、null用作标识符。

3. 严格模式

在==ECMAScript5==中才引入严格模式。
在整个脚本启用,需在顶部添加代码:

1
"use strict";

指定函数启用,需在函数内部顶部加入:

1
2
3
4
function doSomething(){
"use strict";
//函数体;
}

4. 关键字和保留字

关键字,用于表示控制语句的开始和结束,或用于执行特定操作等。共计26个。
保留字,顾名思义,目前无任何特定用途,但将来可能被用作关键字。ECMA-262第三版共计31个。

5. 变量

ECMAScript的变量是松散类型,松散类型可以用来保存任何类型的数据。
变量的数据类型可以在修改变量值时被隐式转换。
++用var操作符定义的变量将成为定义该变量的作用域中的局部变量++。 例如,在函数中使用var定义一个变量,此变量在函数退出后被销毁。
省略var,可以创建一个全局变量。
一条语句定义多个变量,用逗号隔开。
变量声明提升: JavaScript会提升变量声明。这意味着var表达式和function声明都将会被提升到当前作用域的顶部

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
bar();
var bar = function() {};
var someValue = 42;

test();
function test(data) {
if (false) {
goo = 1;

} else {
var goo = 2;
}
for(var i = 0; i < 100; i++) {
var e = data[i];
}
}

//等价于

// var 表达式被移动到这里
var bar, someValue; // 缺省值是 'undefined'

// 函数声明也会提升
function test(data) {
var goo, i, e; // 没有块级作用域,这些变量被移动到函数顶部
if (false) {
goo = 1;

} else {
goo = 2;
}
for(i = 0; i < 100; i++) {
e = data[i];
}
}

bar(); // 出错:TypeError,因为 bar 依然是 'undefined'
someValue = 42; // 赋值语句不会被提升规则(hoisting)影响
bar = function() {};

test();

在原来代码中,if 表达式看起来修改了全局变量 goo,实际上在提升规则被应用后,却是在修改局部变量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
更加生动形象的例子
var myvar = 'my value';

(function() {
alert(myvar); // undefined
var myvar = 'local value';
})();

//等价于

var myvar = 'my value';

(function() {
var myvar;
alert(myvar); // undefined
myvar = 'local value';
})();
liborn wechat
欢迎您扫一扫上面的微信二维码,订阅我的公众号!