1.语句
一般以行为单位。
语句(statement)是为了完成某种任务而进行的操作。
var a = 1 + 3;
1 + 3 叫做表达式(express)。
语句以 ; 结尾。
2.变量
- 2.1概念js变量区分大小写 a 和 A 是两个变量
var a; a // undefined
声明后,未初始化的变量值为 undefined - 2.2 变量提升Js引擎,先解析代码,获取所有被声明变量。放在头部,在运行代码,如果后边声明变量,就会造成变量提升(hoisting)
console.log(a); var a = 1; // undefined
以上代码,同下var a; console.log(a); a = 1;
3.标识符
> 标识符(identifier):指用来表示各种值的合法名称。
> 最常见的就是 *变量名* 以及 *函数名*。
规则如下:
* 第一个字符,可以是任意 Unicode 字符(包括英文或其他语言的字母,中文也是完全可以的),以及dollar($)和下划线(_)。(不包含数字)
* 后面的字符,除了以上再加上数字 0~9。
> 以下保留字,不能用作标识符
arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。
4.注释
> 注释分两种(兼容html注释)
// 这里写行注释
/*
这里写
多行
注释
*/
<!-- 这也是单行注释 -->
5.区块
> 大括号可以将一组语句放在一起称为 block
{
var a = 1;
}
a // 1
区块对var命令不构成单独作用域。
block一般与for、if、while、function连用。
6.条件语句
if 或 switch 结构
- 6.1 if 结构
语法举例:
if(boolean)
statement expression;
// 或者
if(boolean) statement expression;
以上为单语句,多条语句需要放入block中
if(boolean){
statement expression;
statement expression;
statement expression;
}
- 6.2 if…else 结构
语法举例:
if(3 === m){
statement exp1;
}else{
statement exp2;
}
连续判断:
if(0 === m){
statement exp1;
}else if(1 === m){
statement exp2;
}else if(2 === m){
statement exp3;
}
- 6.3 swich结构
多个if连用可以用这个结构代替,case 为入口,直到遇到 break 才跳出。default为默认入口
switch(n){
case "value1":
//...
break;
case "value2":
//...
break;
...
case "value[N]":
//...
break;
default:
//...
}
switch 与 case 的比较使用 严格模式(===),不会进行自动类型转换
var x = 1;
switch (x){
case true:
console.log("x发生了类型转换");
break;
default:
console.log("x没有发生类型转换");
}
// x没有发生类型转换
- 6.4 三元运算符 [?:]
相当于 if else
(condition) ? exp1 : exp2
7.循环语句
- 7.1 while 循环
单语句:
while (condition)
statement exp;
// 或者
while (condition) statement exp;
多条执行语句需要放入 block 中:
while (condition){
statement exp1;
...
statement expN;
}
- 7.2 for 循环
initialize:初始化循环变量
test:测试变量条件,只要为 true 就进入下一循环
increment:每轮循环的最后一步操作,一般用来递进循环变量
for ( initialize; test; increment){
statement exp1;
...
statement expN;
}
所有的 for 循环都可改写为 while 循环
for 循环的三部分表达式,可省略任何一个
for ( ; ; ) 为死循环
- 7.3 do…while循环
最少循环一次
do{
statement exp1;
...
statement expN;
}while ( condition );
最后的 ; 不能省略
- 7.4 break 和 continue
break 跳出循环体 continue 跳入下一循环
如果存在嵌套情况,这两个语句都只针对最内层循环
- 7.5 标签(label)
相当于定位符,通常与 continue 或 break 连用,可以跳出特定循环。
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (1 === i && 1 ===j) break top;
console.log("i=" + i + ", j=" + j);
}
}
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
label:{}
foo:{
console.log(1);
break foo;
console.log('本行不会输出');
}
console.log(2);
// 1
// 2
多层循环,可用于定位到某层循环
top:{
while (true){
sec:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (1 === i && 1 ===j) break sec;
console.log("i=" + i + ", j=" + j);
}
}
}
}
continue 用法
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) continue top;
console.log('i=' + i + ', j=' + j);
}
}
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
// i=2, j=0
// i=2, j=1
// i=2, j=2
8.参考链接
Axel Rauschmayer, Basic JavaScript for the impatient programmer