一、运算符
1.基本运算符
- 
typeof
可以用于获取当前变量的类型
 - 
=
赋值运算符
 - 
==
双等号可以用于判断等号左右两边的值是否相等(不判断类型),相等返回
true,否则返回false。 - 
===
三等号的作用和双等号相同,但是三等号必须要求等号两边的值全等才会返回
true。 
2.算数运算符
- +: 将符号两边的值进行相加操作,也可以用于字符串的拼接,当左右两端有一端是字符串时会将值进行拼接,例如:
var num1 = "5"; var num2 = 3; var res = num1 + num2; console.log(res); // 53 console.log(typeof res); // string - -:将符号两边的值进行相减操作
 - *:将符号两边的值做乘法运算
 - /:将符号两边的值做除法运算
 - %:将符号两边的值做取余运算,例如:5 % 3 = 2.
 - ++:自增运算符,例如:
var num = 5; num++; // 6 - --:自减运算符,例如:
var num = 5; num--; // 4 
3.赋值运算符
- +=:举例:x += y; 和 x = x + y;是等价的。
 - -=:举例:x -= y; 和 x = x - y;是等价的。
 - *=:举例:x *= y; 和 x = x * y;是等价的。
 - /=:举例:x /= y; 和 x = x / y;是等价的。
 - %=:举例:x %= y; 和 x = x % y;是等价的。
 
4.比较运算符
比较运算符用于比较两个值,然后返回一个布尔值,表示是否满足条件。JavaScript提供了8个比较运算符:
- x == y 判断是否相等(忽略变量类型)
 - x === y 判断是否相等(计算变量类型)
 - x != y 判断是否不等(忽略变量类型)
 - x !== y 判断是否不等(计算变量类型)
 - x < y 判断 x 是否小于 y
 - x > y 判断 x 是否大于 y
 - x <= y 判断 x 是否小于等于 y
 - x >= y 判断 x 是否大于等于 y
 
ps :undefined 和 null 与自身严格相等,例如:
var m;
var n;
console.log(m === n);   // true
注意:如果整数和其它类型进行比较,那么会先将其它类型转换为整数再进行比较。比如,布尔类型中的 false 会被转换成0,true 会被转换为1。
5.逻辑运算符
逻辑运算符用于测定变量或值之间的逻辑。常见的布尔运算符有以下三种:
- 非运算符( !)
表达式的值为假的时候,结果为真。 - 与运算符(&&)
运算符两边的表达式必须都为true时才会为true,否则为false。 - 或运算符(||)
运算符两边的表达式必须都为false时才会为false,否则为true。 
给定 x = 6, y = 3 下表解释了逻辑运算符
6. 三目运算符
三目运算符用 ? 和 : 分割表达式,如果第一个表达式的值为 true,则会返回 : 前面的值,否则返回后面的值。
语法:表达式1 ? 值1 : 值2;
例如:
var age = 21;
var res = age > 18 ? "成年" : "未成年";
console.log(res);   // 成年
二、分支语句
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于需要先判断再选择的情况可以选择分支结构。
分支结构的执行是依据一定的条件选择执行路径,而不是按照语句出现的物理顺序。
分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的分支流程选择适当的分支语句。
1.if 条件语句
先判断一个表达式的布尔值,然后根据布尔值的真伪,来选择对应的操作。
语法:
if (条件) {
    执行逻辑
}
2.if-else 语句
if-else 可以被当作 if 语句的升级版,如果结果符合执行语句1,否则执行语句2.
语法:
if (条件) {
    语句1;
} else {
    语句2;
}
3.if-else if-else 语句
当我们需要对一个变量判断多次的时候,我们就可以使用此结构进行判断。可以认为 if-else if-else 结构是多个 if-else 结构的嵌套。
语法:
if (条件1) {
    语句1;
} else if (条件2) {
    语句2;
} else {
    语句3;
}
注意:else 语句不能单独存在,他总是向上匹配离它最近的 if 语句。
4.switch 语句
switch 语句和 if 语句的含义基本相同,其实 switch 更像 if-else if-else 语句。
语法:
switch (表达式) {
    case 结果1: 
        语句1;
        break;
    case 结果2:
        语句2;
        break;
    default:
        默认执行的语句;
        break;
}
上面语句的含义是:
判断表达式的值是否与结果1相同,如果相同则执行结果1下的逻辑,如果不匹配就查看是否匹配结果2,如果匹配则执行,否则再去查看别的 case,如果所有 case 都不满足就执行 default 块下的逻辑。
三、循环语句
在不少实际问题中有许多规律性的重复操作,因此在程序中就需要重复执行某些语句。
一组被重复执行的语句被称为循环体
能够决定循环是否可以继续下去的语句叫做终止条件
循环语句是由循环体和循环终止条件两部分组成
1.while 循环
while 循环包含一个循环条件和一段代码块,事先不知道要执行多少次,只要条件为真,就不断执行代码块,知道条件为假为止。
语法:
while (条件) {
    表达式;
}
例如:
var i = 0;
while (i < 100) {
    console.log("i 当前的值为:" + i);
    i++;
}
如果 i 小于 100 就会一直打印 i 当前的值,知道 i = 100 时条件不符合,就会停止掉。
注意:如果循环的条件不发生改变就会一直执行循环体,这样有可能导致程序崩溃。
2.do-while 循环
do-while 循环和 while 循环结构基本形同,唯一不同的是 do-while 循环会先将循环体执行一遍再进行判断。
语法:
do {
    执行的语句;
}  while (条件);
例如:
var num = 1;
do {
    console.log("num 的值是:" + num);
    num++;
} while (num <= 10);
3.for 循环
for 循环是循环中使用较多的一种循环结构。
for 循环分为两种,一种叫做标准 for 循环,一种叫做for-in循环。而我们通常意义上的 for 循环指的是标准的 for 循环。
3.1 for 循环
语法:
for (表达式1; 表达式2; 表达式3) {
    执行的逻辑;
}
表达式1用于初始化变量
表达式2用于做循环条件的判断
表达式3用于给变量做改变
例如:
for (var i = 0; i < 10; i++) {
    console.log("i 的值为:" + i);
}
for 循环执行顺序:
表达式1只会执行1次,接着执行表达式2,表达式2执行完成之后会进入循环体,循环体执行完成之后会将初始值进行修改,接着再进行判断如果满足就进入循环体再执行,不满足就结束循环。
3.2 for-in 循环
for-in 循环是一种快速浏览容器内的元素的手段,for-in 循环最大的特点是不管容器中有多少个元素都可以遍历一遍。
语法:
for (var 变量名 in 容器) {
    循环体;
}
例如:
var arr = [4, 53, 32, 56, 14];
for (var num in arr) {
     console.log(arr[num]);
}
上述代码的含义是,创建局部变量 num,然后从数组中取出元素下标赋值给 num,并且打印这个值。
4. break 和 continue
break 语句和 continue 语句都具有跳转作用,可以让代码不按原有的顺序执行,
break:用于跳出循环体,终止循环。
continue:用于结束本次循环,开始新一轮的循环。
4.1 演示 break
当 i === 10 的时候结束循环
for (var i = 0; i < 100; i++) {
 if (i === 10) {
        break;
    }
    console.log(i);
}
4.2 演示 continue
在 i === 10 的时候结束本次循环
for (var i = 0; i < 100; i++) {
    if (i === 10) {
        continue;
    }
    console.log(i);
}