前言

本博客实际上更应该算是笔记,实际的内容都来自阮一峰的JavaScript教程,笔记几乎就是教程的简洁版本。

变量

变量的本质是值的引用,当我们调用变量的时候,其实就是调用变量对应的值。

变量提升

JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这样会导致所有申明变量的语句都会提升到代码的头部。

1
2
3
4
5
6
7
8
9
10
11
console.log(a);
var a = 1;


// 变量提升机制,相当于如下代码

var a;
console.log(a);
a = 1;

// 打印undefined

标识符

用来识别各种值的合法名称,如变量名和函数名。JavaScript对大小写铭感,因此aA是两个不同的标识符。

标识符不合法的情况:

  1. 以数字或者其他字符开头
  2. 含有除了字母、下划线、$和数字以外的其他字符
  3. 使用关键字作为标识符

    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。

注释

会被JavaScript解释器忽视的部分,作用是对代码进行说明

  • 单行注释: //
  • 多行注释: /* */

区块

JavaScript使用大括号将语句组合在一起,成为区块。但var没有区块的限制,这估计是引入letconst的原因

1
2
3
4
5
{
var a = 1
}

a //1

条件语句

(1)if else 语句
else代码块总是与离自己最近的那个if语句配对。只要每次都写{}就不会出现问题。

1
2
3
4
5
6
7
8
9
10
11
let fruit = "apple";

if (fruit === "apple") {
console.log("apple");
} else if (fruit === "banana") {
console.log("banana");
} else if (fruit === "cherry"){
console.log("cherry");
}else {
console.log("other");
}

(2)switch语句
本质是为了不要写太多的if else

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let fruit = 'apple'

switch (fruit){
case 'apple':
console.log('apple')
break
case 'banana':
console.log('banana')
break
case 'cherry':
console.log('cherry')
break
default:
console.log('default')
break
}

case中使用的是===运算符,这说明永远不会发生类型转化。
且如果在case之后不添加break,他将一直执行下去。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var x = 1;

switch (x) {
case 1:
console.log('x 等于1');
case 2:
console.log('x 等于2');
default:
console.log('x 等于其他值');
}

// x 等于1
// x 等于2
// x 等于其他值

三元运算符

基本的语法(条件) ? 表达式1 : 表达式2

正确执行表达式1,错误执行表达式2

1
2
3
4
5
6
7
let num = 1

let str = "1"

let result = (num == str) ? true : false

console.log(result) // true

可以视为if …… else语句的简写

1
2
3
4
5
6
7
8
let num = 1
let str = 1

if (num == str) {
console.log(true);
} else {
console.log(false);
}

运算符

搞懂赋值=与比较=====即可。

1
2
3
4
5
6
7
8
9
let num = 2;

let str = "2";

if (num == str) {
console.log("num == str");
} else {
console.log("num != str");
}

while循环

语法为

1
2
3
while (条件) {
语句;
}

条件的括号是必须的,如果条件是恒成立的,即构成一个死循环。

for循环

基础语法

1
2
3
for (初始化表达式; 条件; 递增表达式) {
语句
}
  • 初始化表达式:设置循环的初始值
  • 条件 每轮循环开始时,都要执行这个条件表达式,只有值为真,才继续进行循环。
  • 递增表达式:每轮循环的最后一个操作,通常用来递增循环变量。

所有for循环都可以改成while循环。

do while循环

和while循环的唯一区别就是会提前执行一次代码再判断

基于语法:

1
2
3
do{
语句;
}while(条件);
1
2
3
4
5
6
let i = 1;

do {
console.log(i);
i++;
} while (i < 10);

标签

JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置

1
2
label:
语句;

也可以用于跳出代码块

1
2
3
4
5
6
7
8
9
foo: {
console.log(1);
break foo;
console.log('本行不会输出');
}
console.log(2);

// 1
// 2