此笔记出自下方链接
入门篇
基本语法
变量
-
如果只是声明变量而没有赋值,则该变量的值是 undefined。
-
js是一种动态类型语言,变量可以随时更改类型。
var a = 1;
a = 'hello';
- 变量提升
js引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行的运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升。
console.log(a);
var a = 1;
上面代码首先使用 console.log 方法,在控制台 console 显示变量 a 的值。这时变量 a 还没有声明和赋值,所以这是一种错误的做法,但是实际上不会报错。因为存在变量提升,真正运行的是下面的代码。
var a;
console.log(a);
a = 1;
最后的结果是显示 undefined,表示变量 a 已声明,但还未赋值。
条件语句
- switch 语句中,switch 和 case 后面的表达式中进行判断相等时,使用的是严格相等运算符(===),所以比较的时候不会进行类型转换。
break 和 continue
-
break 用于跳出循环
-
continue 语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。如果存在多重循环,不带参数的 break 语句和 continue 语句都只针对最内层循环。
标签(label)
js 语言允许,语句的前面有标签,相当于定位符,用于跳转到程序的任意位置,标签的格式如下。
label:
语句
标签可以是任意的标识符,但不能是保留字,语句部分可以是任意语句。
标签通常与 break 和 continue 配合使用,跳出特定的循环。
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) break top;
console.log('i=' + i + ', j=' + j);
}
}
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
上面代码为一个双重循环区块,break 后面加上了 top 标签,(注意,top 不用加引号),满足条件时,直接跳出双层循环。如果 break 后面不使用标签,则只能跳出内层循环,进入下一次的外层循环。
标签也可以用于跳出代码块。
foo: {
console.log(1);
break foo;
console.log('本行不会输出');
}
console.log(2);
// 1
// 2
上面代码执行到 break foo,就会跳出区块。
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
上面代码中,continue 后面有一个标签名,满足条件时,会跳过当前循环,直接进入下一轮外层循环。如果 continue 后面不使用标签,则只能进入下一轮的内层循环。