Skip to content

JS的语法

语句 —— Statement

语句(statement)是为了完成某种任务而进行的操作

语句以分号结尾,一个分号就表示一个语句结束。多个语句可以写在一行内。

变量 —— variable

变量是对的具名引用;就是为值起个名,这个名字对应(引用)了那个值。

var是变量声明命令,通知JS引擎要创建变量

js
var a;

特殊地,在不写var直接给变量赋值是有效的

js
var a = 1;
// 基本等同
b = 1;

变量的声明和赋值是两个过程,先声明变量,再赋值。

  • 如果声明了未赋值,那结果是undefined
  • 如果没声明就使用,JS引擎报错 not defined

变量提升 —— hoisting

JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)

js
console.log(a);
var a = 1;

// 相当于
var a;
console.log(a);
a = 1;

表示符 —— identifier

就是变量名和函数名,首字符字母或 _$,后面可以是数字

区块 —— block

{} 把多个语句组合在一起是区块,通常涉及块级作用域 但是var由于有变量提升机制,作用域为全局,所以不构成区块作用域

控制结构

分支

  • if else
  • switch case
  • 三元运算符

循环

  • while
  • for
  • do..while
  • break 与 continue

标签 —— label

这个第一次看到的时候给我干懵了,有点冷门了,果然还是回顾下基础

JS 允许语句的前面有标签label,相当于定位符,用于跳转到程序的任意位置。标签可以是任意的标识符,但不能是保留字,语句部分可以是任意语句。

js
// 直接跳出双层循环top, 如果不加标签的话,break只会跳出单个
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
js
// 跳出block
foo: {
  console.log(1);
  break foo;
  console.log('本行不会输出');
}
console.log(2);
// 1
// 2