学习JavaScript数据结构与算法(第3版)
上QQ阅读APP看书,第一时间看更新

1.3.2 运算符

在编程语言里执行任何运算都需要运算符。在JavaScript里有算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、一元运算符和其他运算符。我们来看一下这些运算符。

    var num = 0; // {1}
    num = num + 2;
    num = num * 3;
    num = num / 2;
    num++;
    num--;

    num += 1; // {2}
    num -= 2;
    num *= 3;
    num /= 2;
    num %= 3;

    console.log('num == 1 : ' + (num == 1)); // {3}
    console.log('num === 1 : ' + (num === 1));
    console.log('num ! = 1 : ' + (num ! = 1));
    console.log('num > 1 : ' + (num > 1));
    console.log('num < 1 : ' + (num < 1));
    console.log('num >= 1 : ' + (num >= 1));
    console.log('num <= 1 : ' + (num <= 1));

    console.log('true && false : ' + (true && false)); // {4}
    console.log('true || false : ' + (true || false));
    console.log('! true : ' + (! true));

在行{1},我们用了算术运算符。下表列出了这些运算符及其描述。

在行{2},我们使用了赋值运算符。下表列出了赋值运算符及其描述。

在行{3},我们使用了比较运算符。下表列出了比较运算符及其描述。

在行{4},我们使用了逻辑运算符。下表列出了逻辑运算符及其描述。

JavaScript也支持位运算符,如下所示。

    console.log('5 & 1:', (5 & 1));
    console.log('5 | 1:', (5 | 1));
    console.log('~5:', (~5));
    console.log('5 ^ 1:', (5 ^ 1));
    console.log('5 << 1:', (5 << 1));
    console.log('5 >> 1:', (5 >> 1));

下表对位运算符做了更详细的描述。

typeof运算符可以返回变量或表达式的类型。我们看下面的代码。

    console.log('typeof num:', typeof num);
    console.log('typeof Packt:', typeof 'Packt');
    console.log('typeof true:', typeof true);
    console.log('typeof [1,2,3]:', typeof [1,2,3]);
    console.log('typeof {name:John}:', typeof {name:'John'});

输出如下。

    typeof num: number
    typeof Packt: string
    typeof true: boolean
    typeof [1,2,3]: object
    typeof {name:John}: object

根据标准,在JavaScript中有两种数据类型。

原始数据类型:null、undefined、字符串、数、布尔值和SymbolSymbol是ES6新引入的数据类型,表示独一无二的值,详见4.4.2节。——编者注

派生数据类型/对象:JavaScript对象,包括函数、数组和正则表达式。

JavaScript还支持delete运算符,可以删除对象里的属性。看看下面的代码。

    var myObj = {name: 'John', age: 21};
    delete myObj.age;
    console.log(myObj); // 输出对象{name: "John"}

这些运算符在后面的算法学习中可能会用到。