cosmos
Cosmos
search
blog Hello comment
{ "articleTitle": "js读书笔记系列(六)", "date": "2021-3-22 18:7:28", "tags": [ "js", "红宝书", "读书笔记", "操作符" ], "categories": "js基础", "timestamp": 1616436448000, "readingTime": 3, "outline": " 操作符面试觉得自己实在太*垃圾*了,就来看看基础,做人还是要 **多读书**。***** 一元操作" }
readingTime: 3min

操作符

面试觉得自己实在太垃圾了,就来看看基础,做人还是要 多读书


一元操作符

只能操作一个值的操作符叫做一元操作符

1、递增、递减

前置操作符,先递增、递减,再计算。

var num1 = 2; 
var num2 = 20; 
var num3 = --num1 + num2; // 先--再求和 21 
var num4 = num1 + num2; // num1已经减过了  21

后置操作符,先计算,再递增、递减

var num1 = 2; 
var num2 = 20; 
var num3 = num1-- + num2; //  先求和 再--  22 
var num4 = num1 + num2; //  num1已经减过了  21

2、一元操作符主要用于基本的算数运算,也可以用于转化数据类型。

位操作符

32位二进制,第32位表示正负数,0为正,1为负。 求负数二进制:求绝对值,取反码,反码+1.

1、按位非(NOT)

~表示,即取反码。

var num1 = 25; // 二进制 00000000000000000000000000011001 
var num2 = ~num1; // 二进制 11111111111111111111111111100110 
alert(num2); // -26

2、按位与(AND)

&表示。

var result = 25 & 3; 
alert(result); //1

计算时转化为二进制。对齐,与操作,只有最后一位相同,为1,所以结果为1.

3、按位或(OR)

|表示。

var result = 25 | 3; 
alert(result); //27

计算时转化为二进制。对齐,或操作。

2、按位异或(XOR)

^表示。

var result = 25 ^ 3; 
alert(result); //26

计算时转化为二进制。对齐,异或操作。(相同为0,不同为1)

布尔操作符

1、逻辑非(!)

!!=Boolean();

2、逻辑与(&&)

可以应用于任何类型的操作数,不仅仅是布尔值。有以下规则:

  • 如果第一个操作数为对象,则返回第二个操作数。(两个都为对象也一样返回第二个)
  • 如果第二个操作数是对象,则只有在第一个操作数求值结果为true的情况下才会返回该对象。
  • 对于null\NaN\undefined,只要有一个操作数为这些值,则返回这些值。
  • 逻辑与操作属于短路操作,即如果第一个操作数能够决定结果(值为false),就不会再对第二个操作数求值。
var found = true; 
var result = (found && someUndefinedVariable); // 这里会发生错误
alert(result); // 这一行不会执行

但如果将found值改为false,alert就会执行。因为不会对第二个操作数再进行求值了。

3、逻辑或(||)

  • 如果第一个操作数是对象,则返回第一个操作数(两个对象同)
  • 如果第一个操作数false,则返回第二个操作数
  • 如果同时为null\NaN\undefined,则返回这些值。
  • 逻辑或也是短路操作,第一个为true,就不会对第二个求值了。 可以利用逻辑或来避免为变量赋null/undefined例如: var myObject = preferredObject || backupObject; 第一个值为null,则赋第二个值。

乘性操作符

Edit on Github