当前位置: 首页 > 新闻动态 > 猜您喜欢 >

web前端之JavaScript操作符上

作者:深圳纯量网络 阅读: 发布时间:2024-08-14 01:01

摘要:在使用前置递增操作符给一个数值加 1 时,要把两个加号放在这个数值变量前面:var age = 29;在应用于布尔值 true 时,先将其转换为...

_前端操作是什么意思_前端$符号

ECMAScript描述了一组用于操作数据值的操作符,包括算术操作符(如加号和减号)、位操作符、 关系操作符和相等操作符。

ECMAScript 操作符能够适用于很多值,例如字符串、数字值、布尔值,甚至对象。在应用于对象时,相应的操作符通常都会调用对象的valueOf()或toString()方法,以便取得可以操作的值。

一、一元操作符

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

1. 递增和递减操作符

递增和递减操作符直接借鉴自 C,而且各有两个版本:前置型和后置型。前置型应该位于要操作的变量之前,而后置型则应该位于要操作的变量之后。

在使用前置递增操作符给一个数值加 1 时,要把两个加号(++)放在这个数值变量前面:

var age = 29; 
++age;

同理,前置递减为:

var age = 29;
--age;

执行前置递增和递减操作时,变量的值都是在语句被求值以前改变的。

var age = 29;
var anotherAge = --age + 2;
alert(age); // 输出28 
alert(anotherAge); // 输出30

后置型递增和递减操作符的语法不变(仍然分别是++和--),只不过要放在变量的后面而不是前面。 后置递增和递减与前置递增和递减有一个非常重要的区别,即递增和递减操作是在包含它们的语句被求 值之后才执行的。

var age = 29;
age++;

把递增操作符放在变量后面并不会改变语句的结果,因为递增是这条语句的唯一操作。但是,当语 句中还包含其他操作时,上述区别就会非常明显了。请看下面的例子:

var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2; // 等于 22
var num4 = num1 + num2; // 等于 21

在应用于不同的值时,递增和递减操作符遵循下列规则:

var s1 = "2"; 
var s2 = "z"; 
var b = false; 
var f = 1.1; 
var o = {
  valueOf: function() { 
    return -1;
  } 
};
s1++; //值变成数值 3
s2++; //值变成 NaN
b++; //值变成数值 1
f--; //值变成 0.10000000000000009(由于浮点舍入错误所致)
o--; // 值变成数值-2

前端操作是什么意思__前端$符号

二、位操作符

位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值。

对于有符号的整数,32 位中的前 31 位用于表示整数的值。第 32 位用于表示数值的符号:0 表示正 数,1 表示负数。这个表示符号的位叫做符号位,符号位的值决定了其他位数值的格式。其中,正数以 纯二进制格式存储,31 位中的每一位都表示 2 的幂。

1. 按位非(NOT)

按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码

var num1 = 25;
var num2 = -num1 - 1; 
alert(num2); // "-26"

按位非操作的本质:操作数的负值减 1

2. 按位与(AND)

按位与操作符由一个和号字符(&)表示,它有两个操作符数。从本质上讲,按位与操作就是将两 个数值的每一位对齐,然后根据下表中的规则,对相同位置上的两个数执行 AND 操作:

第一个数值的位 第二个数值的位 结果

1 1 1

1 0 0

0 1 0

0 0 0

按位与操作只在两个数值的对应位都是 1 时才返回 1,任何一位是 0,结果都是 0。

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

3. 按位或(OR)

按位或操作符由一个竖线符号(|)表示,同样也有两个操作数。按位或操作遵循下面这个真值表。

第一个数值的位 第二个数值的位 结果

1 1 1

1 0 1

0 1 1

0 0 0

按位或操作在有一个位是 1 的情况下就返回 1,而只有在两个位都是 0 的情况下才返回 0。

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

4. 按位异或(XOR)

按位异或操作符由一个插入符号(^)表示,也有两个操作数。以下是按位异或的真值表

第一个数值的位 第二个数值的位 结 果

1 1 0

1 0 1

0 1 1

0 0 0

按位异或与按位或的不同之处在于,这个操作在两个数值对应位上只有一个 1 时才返回 1,如果对 应的两位都是 1 或都是 0,则返回 0。

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

5. 左移

左移操作符由两个小于号()表示,这个操作符会将数值向右移动,但保留符号位(即

正负号标记)。有符号的右移操作与左移操作恰好相反,即如果将64向右移动5位,结果将变回 2:

var oldValue = 64; // 等于二进制的1000000
var newValue = oldValue >> 5; // 等于二进制的10 ,即十进制的2

同样,在移位过程中,原数值中也会出现空位。只不过这次的空位出现在原数值的左侧、符号位的 右侧。而此时 ECMAScript 会用符号位的值来填充所有空位,以便得到一个完整的值。

7. 无符号右移

无符号右移操作符由 3 个大于号(>>>)表示,这个操作符会将数值的所有 32 位都向右移动。对正 数来说,无符号右移的结果与有符号右移相同。仍以前面有符号右移的代码为例,如果将 64 无符号右移5位,结果仍然还是 2:

var oldValue = 64;// 等于二进制的1000000
var newValue = oldValue >>> 5;// 等于二进制的10 ,即十进制的2

但是对负数来说,情况就不一样了。首先,无符号右移是以 0 来填充空位,而不是像有符号右移那 样以符号位的值来填充空位。所以,对正数的无符号右移与有符号右移结果相同,但对负数的结果就不一样了。其次,无符号右移操作符会把负数的二进制码当成正数的二进制码。而且,由于负数以其绝对值的二进制补码形式表示,因此就会导致无符号右移后的结果非常之大。

var oldValue = -64; // 等于二进制的11111111111111111111111111000000 
var newValue = oldValue >>> 5; // 等于十进制的 134217726

  • 原标题:web前端之JavaScript操作符上

  • 本文由深圳纯量网络小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与纯量网络联系删除。
  • 微信二维码

    CLWL6868

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员

    点击这里给我发消息电话客服专员

    在线咨询

    免费通话


    24h咨询☎️:132-5572-7217


    🔺🔺 24小时客服热线电话 🔺🔺

    免费通话
    返回顶部