js 笔记 - 基本语法

113 阅读2分钟

此笔记出自下方链接

wangdoc.com/javascript/

入门篇

基本语法

变量

  • 如果只是声明变量而没有赋值,则该变量的值是 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 后面不使用标签,则只能进入下一轮的内层循环。