1.变量
JavaScript 的变量名区分大小写,A和a是两个不同的变量。如果只是声明变量而没有赋值,则该变量的值是undefined。undefined是一个特殊的值,表示“无定义”。
var a;
a // undefined
如果一个变量没有声明就直接使用,JavaScript 会报错,告诉你变量未定义。
x
// ReferenceError: x is not defined
1.1变量的提升
javaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)
console.log(a);
var a = 1;
上面的语法不会报错,因为存在变量提升,它的实际运行会是这样
var a;
console.log(a);
a = 1;//undefined
输出的结果是undefined
2.标识符(identifier)
规则
- 区分大小写,A与a是两个不同的标识符。
- 标识符首字符可以是Unicode 字母,下划线(_),美元符($),不能是数字。
- 标识符中其它字符可以是Unicode 字母,下划线(_)、美元符($)、数字组成的。
var 1// Unexpected number,第一个字符不能是数字
var ** //Unexpected token ** 标志符中不能有星号
var -d //Unexpected token - 标志符中不能有减号或连字符
var u+1 =3 //Unexpected token + 标志符中不能有加号
JavaScript 有一些保留字,不能用作标识符: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。
3.注释
// 单行注释
单行注释(只有在行首,其他地方被当作运算符)
/*
多行
注释
*/
4.区块
对于var命令来说,JavaScript 的区块不构成单独的作用域(scope)
{
var a = 1;
}
a // 1
上面代码中,对于区块内部的a变量,在区块外部依然可以访问,在JavaScript中,区块一般用来构成复杂的语法
5.条件语句
5.1 if 和 if ... else语句
if
语法结构
if(条件) {//条件是一个bool值,true 或 false
语句
}
var i = 2;
if (i == 2) {
console.log('i的值为2'); //i的值为2
}
赋值表达式(=)
相等运算符(==)
严格相等运算符(===)
if ... else
语法结构
if (条件) {
// 满足条件时,执行的语句
} else {
// 不满足条件时,执行的语句
}
5.2 switch语句
语法结构
switch (a) {
case "a":
// 语句a...
break;
case "b":
//语句b ...
break;
default:
// 语句default...
}
- 当符合
case
中的a
条件时,case
中的语句a会执行,break
关键字会中断switch
语句执行下一个case
语句,如果没有break
,下一个case
语句分执行 -
case
语句中可以用表达式,但是和switch
后面的表达式是用===
匹配,不会进行强类型转换
5.3 三元运算符
(条件) ? 表达式1 : 表达式2
当条件为true时,执行表达式1 否则执行表达式2
var i = 2;
var a;
i == 2 ? a = i : a = 3
console.log(a)//a = 2
6.循环语句
for
循环
for (初始化表达式; 条件; 递增或递减表达式) {
语句
}
var a = 3;
for (var i = 0; i < a; i++) {
console.log(i);
}
// 0 1 2
var b = 3;
for (var i = b; i > 0; i--) {
console.log(i);
}
//3 2 1
while
循环
while(条件) {
语句
};
do...while
循环
do {
语句
}while(条件);
eg:
var i = 5;
do {
console.log('run');
i--;
console.log(i);
}while(i > 1);
//run 4 3 2 1
不管条件是否为真,do...while
循环至少运行一次
break和continue
break
语句用于跳出代码块或循环
for(i = 0; i < 5; i ++) {
if(i == 3) {
console.log('break');
break;
}
console.log(i);
}
输出:0 1 2 break
continue
语句用于跳出当次循环,继续执行下一次循环(如果有)
for(i = 0; i < 5; i ++) {
if(i == 3) {
console.log('continue');
continue;
}
console.log(i);
}
输出:0 1 2 continue 4
7.标签(label)
相当于定位符,用于跳转到程序的任意位置,标签通常与break
语句和continue
语句配合使用,跳出特定的循环
label:
语句
test:
for(i = 0; i < 5; i ++) {
for(j = 0; j < 5; j ++) {
if(j == 3) {
break test;
}
console.log('i = ' + i + `, j = ` + j);
}
}
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
参考:https://wangdoc.com/javascript/basic/grammar.html