JS 的基本语法
1.表达式
- 1+2表达式的值为3
- add(1,2)表达式的值为函数的返回值
- console.log表达式的值为函数本身
- console.log(3)表达式的值为 undefined
- 表达式一般都有值或返回值,值跟返回值是不同的概念,函数的值就是返回值
2.语句
- var a = 1 是一个语句。
- 语句一般会改变环境(声明、赋值)
在JS中大小写是敏感的
大部分 回车、空格没有实际意义
注意:return后面不能加回车
3.标识符规则
- 第一个字符,可以是字母,$,_,汉字
后面的字符,可以是 除了上面所说的,还可以是数字
4.条件语句
4.1.if 结构
if (布尔值)
语句;
// 或者
if (布尔值) 语句;
如果表达式的求值结果为true,就执行紧跟在后面的语句;如果结果为false,则跳过紧跟在后面的语句。
以上写法要求条件表达式后面只能有一个语句。如果想执行多个语句,必须在if的条件判断之后,加上大括号,表示代码块(多个语句合并成一个语句)。
例:
if (m === 3) {
m += 1;
}
注意,if后面的表达式之中,不要混淆赋值表达式(=)、严格相等运算符(===)和相等运算符(==)。
现在新语法用(===),(==)为旧语法,可能会有bug。
4.2.if...else 结构
if (m === 3) {
// 满足条件时,执行的语句
} else {
// 不满足条件时,执行的语句
}
else代码块总是与离自己最近的那个if语句配对。
4.3.switch 结构
switch (fruit) {
case "banana":
// ...
break;
case "apple":
// ...
break;
default:
// ...
}
上面代码根据变量fruit的值,选择执行相应的case。如果所有case都不符合,则执行最后的default部分。需要注意的是,每个case代码块内部的break语句不能少,否则会接下去执行下一个case代码块,而不是跳出switch结构。
4.4.冒号问号表达式(三元运算符?:)
(条件) ? 表达式1 : 表达式2
上面代码中,如果“条件”为true,则返回“表达式1”的值,否则返回“表达式2”的值。
4.5.&& 短路逻辑
A && B && C && D
取第一个假值或D,不会取true/false
if (window.f1){
console.log('f1存在')
}
window.f1 && console.log('f1存在')
上面两个代码是等价的
4.6.|| 短路逻辑
A || B || C || D
取第一个真值或D,不会取true/false
if(!a){
b
}else{}
a || b
上面两个代码是等价的
5.循环语句
5.1.while 循环
While语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。
while (条件)
语句;
// 或者
while (条件) 语句;
while语句的循环条件是一个表达式,必须放在圆括号中。代码块部分,如果只有一条语句,可以省略大括号,否则就必须加上大括号。
while (条件) {
语句;
}
5.2.for 循环
for语句是循环命令的另一种形式,可以指定循环的起点、终点和终止条件。它的格式如下。
for (初始化表达式; 条件; 递增表达式)
语句
// 或者
for (初始化表达式; 条件; 递增表达式) {
语句
}
6.break continue
break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。
6.1.break
break语句用于跳出代码块或循环,跳出最近的整个循环。
for (var i = 0; i < 5; i++) {
console.log(i);
if (i === 3)
break;
}
// 0
// 1
// 2
// 3
上面代码执行到i等于3,就会跳出循环。
6.2.continue
continue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。
var i = 0;
while (i < 100){
i++;
if (i % 2 === 0) continue;
console.log('i 当前为:' + i);
}
上面代码只有在i为奇数时,才会输出i的值。如果i为偶数,则直接进入下一轮循环。
7.label 标签
语法
foo: {
console.log(1);
break foo;
console.log('本行不会输出');
}
console.log(2);
{
foo: 1;
}
//1
这是一个label标签,不是对象。