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=0js
// 跳出block
foo: {
console.log(1);
break foo;
console.log('本行不会输出');
}
console.log(2);
// 1
// 2