原文传送门

我的博客

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注