JavaScript(四)

操作符

一元操作符:只能操作一个值的操作符

递增递减操作符:

前置递增递减操作与执行语句的优先级相等,整个语句会从左至右被求值。后置递增递减操作是在包含它们的语句被求值之后才执行的。

这四个操作符对任何值都适用,在应用不同值时,递增和递减操作符遵循下列规则:

①在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1的操作。字符串变量变成数值变量。

②在应用于一个不包含有效数字字符的字符串时,将变量的值设置为NaN。字符串变量变成数值变量。

③在应用于布尔值false时,先将其转换为0再执行加减1的操作。布尔值变量变成数值变量。

④在应用于布尔值true时,先将其转换为1再执行加减1的操作。布尔值变量变成数值变量。

⑤在应用于浮点数时,执行加减1的操作。

⑥在应用于对象时,先调用对象的valueOf()方法以取得一个可供操作的值。然后对该值应用前述规则。如果结果是NaN,则在调用toString()方法后再应用前述规则。对象变量变成数值变量。

一元加和减操作符:
一元加操作符以一个加号(+)表示,放在数值前面,对数值不会产生任何影响。

var num=25;

num=+num;

一元减操作符主要用于表示负数。

位操作符:

对于有符号的整数,32位中的前31位用于表示整数的值,第32位用于表示数值的符号,0为正,1为负。二进制码。负数同样以二进制码存储,但使用的格式是二进制补码。

求补码:①求绝对值的二进制码;②求二进制反码,即将0替换为1,将1替换为0;③得到的二进制反码加1。

ECMAScript会尽力向我们隐藏所有这些信息,在以二进制字符串形式输出一个负数时,我们看到的只是这个负数的绝对值的二进制码前面加了一个负号。

按位非:用一个波浪线(~)表示,执行按位非的结果就是返回反码。本质为操作数的负值减1

按位与:用&表示,它有两个操作符数

按位或:用|表示,有两个操作数。

按位异或:由^表示,有两个操作数,不同的时候返回1,相同的时候返回0。

左移:由两个小于号<<表示,这个操作符会将数值的所有位向左移动指定的位数。用0来补充空位。不会影响操作数的符号位。

有符号的右移:由>>表示,这个操作符也会将数值向右移动,但保留符号位。用符号值来填充空位。

无符号的右移:用>>>表示,将数值的所有32位向右移动。以0来填充空位。

布尔操作符:

逻辑非:用!表示,可以应用于ECMAScript中的任何值,返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。

逻辑与:用&&表示,有两个操作数,操作不一定返回布尔值

①如果第一个操作数是对象,则返回第二个操作数

②如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象

③如果两个操作数都是对象,则返回第二个操作数

④如果有一个操作数是null,则返回null

⑤如果有一个操作数是NaN,则返回NaN

⑥如果有一个操作数是undefined,则返回undefined

逻辑与操作属于短路操作如果第一个操作数能够决定结果,就不会再对第二个操作数求值。如果第一个操作数是false,则不会再对第二个操作数求值,结果为false。

逻辑或:用||表示,有两个操作数。如果有一个操作数不是布尔值,逻辑或不一定返回布尔值

①如果第一个操作数是对象,则返回第一个操作数

②如果第一个操作数的求值结果为false,则返回第二个操作数

③如果两个操作数都只对象,则返回第一个操作数

④如果两个操作数都是null,则返回null

⑤如果两个操作数都是NaN,则返回NaN

⑥如果两个操作数都是undefined,则返回undefined

逻辑或操作符也是短路操作符,如果第一个操作数的求值结果为true,就不会对第二个操作数求值

var myObject=preferredObject || backupObject;

变量preferredObject中包含优先赋给变量myObject的值,变量backupObject负责在preferredObject中不包含有效值的情况下提供后备值。

乘性操作符


评论

© 完全感觉Dreamer | Powered by LOFTER