JavaScript 的基本语法

172 阅读2分钟

参考 wangdoc.com/javascript/…

表达式与语句

两者区别

表达式一般都有值,语句可能有也可能没有

语句一般会改变环境(声明,赋值)

上面两句不绝对

表达式

1 + 2 表达式的为 3

add(1,2)表达式的值为函数的返回值(只有函数有返回值)

console.log 表达式的值为函数本身

console.log(3) 表达式的值为 undefined

image-20221201134902457 image-20221201132730596

语句

var a = 1 是一个语句

大小写敏感

var a 和 var A 不同

object 和 Object 不同,function 和 Function 不同

空格&回车

大部分空格没有意义,但是回车不能加在 return 后面

image-20221201133416121

标识符

规则

第一个字符可以是Unicode字母(注意不是英文字母)或 $ 或 _ 或 中文

后面的字符还可以有数字

语法错误

变量名是标识符

var _ = 1

var $ = 2

var 你好 = ‘hi’

区块 block

把代码包在一起

常与 if / for / while 合用

条件语句

if语句

语法

if (表达式){语句1} else {语句2}

变态情况

  • 表达式 a=1

image-20221201145836296image-20221201145912296

  • 语句1和语句2可以嵌套if-else
  • 缩进

image-20221201151222383image-20221201151317942

推荐写法

最好

if (表达式) {
	语句
} else if (表达式) {
	语句
} else {
	语句
}

次推荐

function fn(){
	if (表达式)  {
		return 表达式
	}
	if (表达式) {
		return 表达式
	}
	return 表达式
}

switch语句

语法

switch (fruit) {
  case "banana":
    // ...
    break;
  case "apple":
    // ...
    break;
  default:
    // ...
}

break

大部分时候,每个case代码块内部的break语句不能少,否则会接下去执行下一个case代码块,而不是跳出switch结构。

问号冒号表达式

表达式1 ? 表达式2 : 表达式3

如果表达式1为true,则返回“表达式2”的值,否则返回“表达式3”的值。

&& 且 短路逻辑

用于多个表达式的求值

A && B && C && D

返回第一个布尔值为false的表达式的值 或 表达式D的值

image-20221201155722874

使用场景:

image-20221201153306291

|| 或 短路逻辑

A || B || C || D

取第一个真值或D

image-20221201155739759

使用场景:

image-20221201155438599 image-20221201155620301

循环语句

while语句

while(表达式){语句}

如果表达式为真,执行语句,执行完毕再判断表达式的真假,当表达式为假,执行后面的语句

image-20221201162451149

注意

  1. while没有返回值
  2. 死循环问题
  3. 浮点数问题
image-20221201163056673

for循环

while的语法糖image-20221201163339084

语法

for (语句1①; 表达式2②; 语句3③) {循环体④}

先执行语句1,然后判断表达式2,如果为真,执行循环体,然后执行语句3;每轮循环判断表达式2,如果为假,则直接退出循环。

①②④③->②④③->②④③->②为false退出循环

break和continue

退出所有循环 v.s. 退出当前一次循环

注意:break只会退出离他最近的for

label

foo: {
  console.log(1);
  break foo;
  console.log('本行不会输出');
}
console.log(2);

可以用来跳出双层循环

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
image-20221201174005323

foo是一个label,跟着的语句是1