JS 的基本语法

151 阅读3分钟

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标签,不是对象。