基本运算

基本运算包括加减乘除

  1. 当数字与任意字符串都相加时相当于字符串拼接

    1
    2
    3
    4
    console.log(100 + "100");
    //结果为 100100
    console.log(100 + "test");
    //结果为 100test
  2. 当数字与一个字符串类型的数字相减时就返回正确的结果,与非数字的字符串相见返回NAN

    1
    2
    3
    4
    console.log(100 - "10");
    //结果为 90
    console.log(100 - "test");
    //结果为NaN
  3. 乘法、除法与减法类似。

    1
    2
    3
    4
    5
    6
    7
    8
    console.log(100 * "test");
    //结果为 NaN
    console.log(100 * "10");
    //结果为 1000
    console.log(100 / "test");
    //结果为 NaN
    console.log(100 / "10");
    //结果为 10

由此可以得到:加法运算时,无论字符串是什么都会进行拼接;而减法、除法、乘法则会尽力转换字符串为number类型,如果无法转换结果为NaN,否则返回运算结果。

取余运算

当左边的操作数位正数时,那么结果也为整数

当左边的操作数位负数时,那么结果也为负数

1
2
3
4
5
6
7
8
console.log(10 % 3);
//结果为 1
console.log(-10 % 3);
//结果为 -1
console.log(10 % -3);
//结果为 1
console.log(-10 % -3);
//结果为 -1

自增运算

自增(自减)运算结果的确定其实很简单,因为n++n=n+1的简写,所以当加号在后边的时候n++那么返回的是n,也就是直接返回结果在计算。反之,当++n时返回的就是运算结果。

1
2
3
4
5
var n = 100;
var result1 = n++;
//result 的值为n的值 因为加号在后边,所以返回n而不是返回运算后的值
console.log(result1, n);
// result1为100 n为101
1
2
3
4
5
var n = 100;
var result = ++n;
//result 的值为n运算后的结果 因为加号在前边,所以返回n运算的结果
console.log(result, n);
// result为101 n为101

全等与不等运算

  • 判断是否为NaN

    1
    2
    console.log(isNaN('test'));
    //NaN
  • 只判断值而不判断类型

    1
    2
    3
    4
    // 只判断值是否相等 相等返回true 不等返回false
    console.log(2 == "2"); //true
    // 只判断值是否不等于 不等于返回true 等于返回false
    console.log(2 != "2"); //false
  • 即判断值也判断类型

    1
    2
    3
    4
    // 判断值与类型是否全相同 全相同返回true 不全相同返回false
    console.log(2 === "2"); //false
    // 判断值与类型是否不相同 不相同返回true 相同返回false
    console.log(2 !== "2"); //true

逻辑运算符

运算符描述案例
逻辑与运算符(&&如果左边操作数转换为 boolean 类型的值为 false,则返回左边操作数,否则返回右边操作数true && false 的结果为 false
逻辑或运算符(||如果左边操作数转换为 boolean 类型的值为 true,则返回左边操作数,否则返回右边操作数false || true 的结果为 true
逻辑非运算符(!将操作数转换为 boolean 类型的值,如果为 true 的话则返回 false,否则返回 true!true 的结果为 false

赋值运算符

赋值运算符中a=a+1可以简写为a+=1

简写与不简写的区别:简写的执行效率高于不简写

条件运算符与条件语句

条件运算符即condition ? exprIfTrue : exprIfFalse

1
2
3
4
var age = 20
var result = age > 18 ? '成年人' : '未成年人'
console.log(result)
// 成年人

在JavaScript中:

  • 条件语句和条件运算符可以相互改写
  • 运算符的执行优先级别高于语句的
  • 条件运算符的效率更高

if-elseif-else结构优于层级嵌套。

在switch语句中,default不一定写在末尾。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var num = 'test';
switch (num) {
default:
console.log("人工");
break;
case 0:
console.log(0);
break;
case 1:
console.log(1);
break;
case 2:
console.log(2);
break;
case 3:
console.log(3);
break;
}
// 结果为 人工