操作符

JavaScript 有赋值、比较、算术、位、逻辑、字符串和特殊运算符。本章描述了操作符,以及关于操作符优先级的一些信息。

表 2.1 JavaScript 所有操作符简明列表。

表 2.1 JavaScript 操作符

操作符分类 操作符 描述




+ (加法) 将两个数相加。
++ (自增) 将表示数值的变量加一(可以返回新值或旧值)。
- (求相反数,减法)
作为求相反数操作符时返回参数的相反数。作为二进制操作符时,将两个数相减。
-- (自减) 将表示数值的变量减一(可以返回新值或旧值)。
* (乘法) 将两个数相乘。
/ (除法) 将两个数相除。
% (求余) 求两个数相除的余数。
字符串操作符 + (字符串加法) 连接两个字符串。
+= 连接两个字符串,并将结果赋给第一个字符串。




&& (逻辑与) 如果两个操作数都是真的话则返回真。否则返回假。
|| (逻辑或) 如果两个操作数都是假的话则返回假。否则返回真。
! (逻辑非) 如果其单一操作数为真,则返回假。否则返回真。



& (按位与) 如果两个操作数对应位都是 1 的话则在该位返回 1。
^ (按位异或) 如果两个操作数对应位只有一个 1 的话则在该位返回 1。
| (按位或) 如果两个操作数对应位都是 0 的话则在该位返回 0。
~ (求反) 反转操作数的每一位。
<< (左移)
将第一操作数的二进制形式的每一位向左移位,所移位的数目由第二操作数指定。右面的空位补零。
>> (算术右移)
将第一操作数的二进制形式的每一位向右移位,所移位的数目由第二操作数指定。忽略被移出的位。
>>> (逻辑右移)
将第一操作数的二进制形式的每一位向右移位,所移位的数目由第二操作数指定。忽略被移出的位,左面的空位补零。




= 将第二操作数的值赋给第一操作数。
+= 将两个数相加,并将和赋给第一个数。
-= 将两个数相减,并将差赋给第一个数。
*= 将两个数相乘,并将积赋给第一个数。
/= 将两个数相除,并将商赋给第一个数。
%= 计算两个数相除的余数,并将余数赋给第一个数。
&= 执行按位与,并将结果赋给第一个操作数。
^= 执行按位异或,并将结果赋给第一个操作数。
|= 执行按位或,并将结果赋给第一个操作数。
<<= 执行左移,并将结果赋给第一个操作数。
>>= 执行算术右移,并将结果赋给第一个操作数。
>>>= 执行逻辑右移,并将结果赋给第一个操作数。




== 如果操作数相等的话则返回真。
!= 如果操作数不相等的话则返回真。
> 如果左操作数大于右操作数的话则返回真。
>= 如果左操作数大于等于右操作数的话则返回真。
< 如果左操作数小于右操作数的话则返回真。
<= 如果左操作数小于等于右操作数的话则返回真。




?: 执行一个简单的“if...else”语句。
, 计算两个表达式,返回第二个表达式的值。
delete 允许你删除一个对象的属性或数组中指定的元素。
new 允许你创建一个用户自定义对象类型或内建对象类型的实例。
this 可用于引用当前对象的关键字。
typeof 返回一个字符串,表明未计算的操作数的类型。
void 该操作符指定了要计算一个表达式但不返回值。

赋值操作符

赋值操作符会根据其右操作数侧的值给左操作数赋值。

实现版本 Navigator 2.0

最基本的赋值操作数是等号(=),它会将右操作数的值直接赋给左操作数。也就是说,x = y 将把 y 的值赋给
x。其它的赋值操作符都是标准操作的缩略形式,列在表 2.2 中。

表 2.2 赋值操作符

缩写操作符 含义
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y
x <<= y x = x << y
x >>= y x = x >> y
x >>>= y x = x >>> y
x &= y x = x & y
x ^= y x = x ^ y
x |= y x = x | y

比较操作符

所谓比较操作符,就是会比较其两边的操作数,并根据比较结果为真或假返回逻辑值。操作数可以是数值或字符串值。如果使用字符串值的话,比较是基于标准的字典顺序。

实现版本 Navigator 2.0

相关内容列在了表 2.3
中。对于该表中的示例,我们假定 var1 被赋予了值 3,而 var2 被赋予了值 4。

表 2.3 比较操作符

操作符 描述 返回真的例子
相等(==) 如果操作数相等的话则返回真。 3 == var1
不等(!=) 如果操作数不等的话则返回真。 var1 != 4
大于(>) 如果左操作数大于右操作数的话则返回真。 var2 > var1
大于或等于(>=) 如果左操作数大于等于右操作数的话则返回真。 var2 >= var1
var1 >= 3
小于(<) 如果左操作数小于右操作数的话则返回真。 var1 < var2
小于或等于(<=) 如果左操作数小于等于右操作数的话则返回真。 var1 <= var2
var2 <= 5

算术操作符

将给定数值(常量或变量)进行给定的计算,并返回一个数值。标准的算术操作符是加(+)、减(-)、乘(*)、除(/)四则运算。这些操作符与在其它编程语言中的作用一样。

实现版本 Navigator 2.0

% (取余)

取余操作符用法如下:

var1 % var2

取余运算符将返回第一个操作数除以第二个操作数的余数。对于上面的例子来说,将返回 var1 变量除以 var2 变量的余数。更具体的例子是,12 % 5
将返回 2。

++ (自增)

自增操作符用法如下:

var++ 或 ++var

该自增操作符将自增操作数(自己加上 1)并返回一个值。如果写在变量后面(如
x++),将返回自增前的值。如果写在变量前面(如 ++x),将返回自增后的值。

例如,如果 x 是 3,那么语句 y = x++ 将先把 y 置为 3 再将 x 自增为 4。相反,语句 y =
++x 将先将 x 自增为 4,再将 y 置为 4。

-- (自减)

自减操作符用法如下:

var-- 或 --var

该自增操作符将自减操作数(自己减去 1)并返回一个值。如果写在变量后面(如
x--),将返回自减前的值。如果写在变量前面(如 --x),将返回自减后的值。

例如,如果 x 是 3,那么语句 y = x-- 将先把 y 置为 3 再将 x 自减为 2。相反,语句 y =
--x 将先将 x 自减为 2,再将 y 置为 2。

- (求相反数)

求相反数操作数将取得操作数的相反数。例如,y = -x 将把 x
相反数的值赋给 y;也就是说,如果 x 是 3 的话,y 就会获得 -3 而 x 还是 3。

位操作符

执行位操作时,操作符会将操作数看作一串二进制位(1和0),而不是十进制、十六进制或八进制数字。例如,十进制的 9 就是二进制的
1001。位操作符在执行的时候会以二进制形式进行操作,但返回的值仍是标准的 JavaScript 数值。

表 2.4 JavaScript 位操作符总览

表 2.4 位操作符

操作符 用法 描述
按位与 a & b 如果两个操作数对应位都是 1 的话则在该位返回 1。
按位或 a | b 如果两个操作数对应位都是 0 的话则在该位返回 0。
按位异或 a ^ b 如果两个操作数对应位只有一个 1 的话则在该位返回 1。
求反 ~ a 反转操作数的每一位。
左移 a << b 将 a 的二进制形式左移 b 位。右面的空位补零。
算术右移 a >> b 将 a 的二进制形式右移 b 位。忽略被移出的位。
逻辑右移 a >>> b 将 a 的二进制形式右移 b 位。忽略被移出的位,左侧补入 0。

位逻辑操作符

实现版本 Navigator 2.0

从原理上讲,位逻辑操作符的工作流程是这样的:

  • 将操作数转换为 32 位的整型数值并用二进制表示。
  • 第一操作数的每一位与第二操作数的对应位配对:第一位对第一位,第二位对第二位,以此类推。
  • 对每一对位应用操作符,最终结果按位组合起来。

例如,9 的二进制表示为
1001,15 的二进制表示为 1111。所以如果对这两个数应用位逻辑操作符,结果应该像下面这样:

  • 15 & 9 结果为 9 (1111 & 1001 = 1001)
  • 15 | 9 为 15 (1111 | 1001 = 1111)
  • 15 ^ 9 为 6 (1111 ^ 1001 = 0110)

移位操作符

实现版本 Navigator 2.0

移位操作符需要两个操作数:第一个是要进行移位的数值,第二个指定要对第一个数移位的数目。移位的方向由使用的操作符决定。

移位操作符将把两个操作符转换为 32 位整型数值,并返回与左操作数类型相同的结果。

<< (左移)

该操作符将把第一个操作数向左移若干位。移出的位将被忽略。右侧空位补零。

例如,9<<2 结果为 36,因为 1001 向左移两位变成 100100,这是 36。

>> (算术右移)

该操作符将把第一个操作数享有移若干位。移出的位将被忽略。左侧的空位补上与原来最左面位相同的值。

例如,9>>2 结果为 2,因为 1001 右移两位变成 10,这是 2。反之,-9>>2
结果为 -3,因为要考虑到符号位。

>>> (逻辑右移)

该操作符将把第一个操作数享有移若干位。移出的位将被忽略。左侧的空位补零。

例如,19>>>2 结果为 4,因为 10011 右移两位变成 100,这是
4。对于非负数,算术右移和逻辑右移结果相同。

逻辑操作符

逻辑操作符用 Boolean 值(布尔逻辑值)作为操作数,并返回 Boolean
值。

实现版本 Navigator 2.0

表 2.5 描述的很清楚。

表 2.5 逻辑操作符

操作符 用法 描述
与(&&) expr1 && expr2 如果 expr1 为假则返回之,否则返回 expr2。
或(||) expr1 || expr2 如果 expr1 为真则返回之,否则返回 expr2。
非(!) !expr 如果 expr 为真则返回假,否则返回真。

示例

考虑下面的脚本:

<script language="JavaScript1.2">"
v1 = "猫";
v2 =
"狗";
v3 = false;
document.writeln("t && t 返回 "
+ (v1 && v2));
document.writeln("f && t 返回 " + (v3 &&
v1));
document.writeln("t && f 返回 " + (v1 &&
v3));
document.writeln("f && f 返回 " + (v3 && (3 ==
4))); document.writeln("t || t 返回 " + (v1 ||
v2));
document.writeln("f || t 返回 " + (v3 || v1));
document.writeln("t ||
f 返回 " + (v1 || v3));
document.writeln("f || f 返回 " + (v3 || (3 ==
4)));
document.writeln("!t 返回 " +
(!v1));
document.writeln("!f 返回 " + (!v3));
</script>

该脚本将显示下列内容:

t && t 返回 狗
f && t 返回 false
t
&& f 返回 false
f && f 返回 false
t || t 返回 猫
f || t 返回

t || f 返回 猫
f || f 返回 false
!t 返回 false
!f 返回 true

JavaScript操作符汇总的更多相关文章

  1. javascript——操作符(~、&、|、^、<<、>>)

    直接上代码吧! <script type="text/javascript"> //javascript操作符 //1.按位非~ var num1=25;// var ...

  2. javascript 操作符类型隐性转换

    javascript 操作符类型隐性转换 (一).一元操作符只能操作一个值的操作符叫做一元操作符1.递增和递减操作符a. 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1的操作 ...

  3. JavaScript操作符(一元操作符)

    JavaScript操作符包括算术操作符.位操作符.关系操作符和相等操作符.只能操作一个值的操作符叫做一元操作符. 递增和递减操作符 递增和递减操作符有两个版本:前置型和后置型.前置型操作符位于要操作 ...

  4. JavaScript操作符-3---算数,逻辑,赋值,比较,三元

    JavaScript操作符 学习目标 1.掌握什么是表达式 2.掌握javascript操作符的分类 3.掌握算数操作符 什么是表达式 将类型的数据(如常量.变量.函数等),用运算符号按一定的规则链接 ...

  5. JavaScript操作符(=?,)优先级

    JavaScript操作符优先级: 关于最后3个运算符的优先级比较,下面通过一个实例来具体说明: var a,b,c; a = 3,4,5; b = a--,--a,a; c = a ? b++ : ...

  6. JavaScript 操作符 变量

    一.操作符: 一元操作符 递增操作符 递减操作符 分为 前置型(--a    ++a) 和 后置型 (a--    a++) 区别如下: var a = 3,b=6; c = --a +b; //c= ...

  7. JavaScript操作符(布尔操作符、乘性操作符和加性操作符)

    布尔操作符 布尔操作符用来测试两个值的关系,布尔操作符有三个,逻辑非(!).逻辑与(&&),逻辑或(||). 逻辑非由一个叹号(!)组成,可以应用于JavaScript任何值.逻辑非首 ...

  8. Javascript - 操作符

    操作符(Operator) void 如果void后是数字,就返回NAN,否则返回Undefined. alert(void "hello");//跟的字符 print undef ...

  9. Javascript知识点汇总-初级篇

    JavaScript的数据类型都有什么? 基本数据类型:String,Boolean,Number,Undefined, Null 引用数据类型:Object(Array,Date,RegExp,Fu ...

随机推荐

  1. 解读TCP 四种定时器

    TCP 是提供可靠的传输层,它使用的方法之一就是确认从另一端收到的数据.但是数据和确认都可能会丢失.TCP 通过在发送时设置一个定时器来解决这个问题.如果当定时器溢出时还没收到确认,它就会重传该数据. ...

  2. 自己做的notepad++ FTP同步插件

    平时修改FTP上的文件的时候,想先备份一下,没有合适的方法,尝试做了一个小插件. 差点忘了,下载地址   https://pan.baidu.com/s/1htdtT9E 下面是   具体的说明 Fa ...

  3. 洛谷 [P4011] 孤岛营救问题

    状压+BFS 通过观察数据范围可知,我们应该状压钥匙种类,直接BFS即可 注意,一个点处可能不知有一把钥匙 #include <iostream> #include <cstdio& ...

  4. 51NOD 1584 加权约数和 [莫比乌斯反演 转化 Trick]

    1584 加权约数和 题意:求\(\sum_{i=1}^{N} \sum_{j=1}^{N} {\max(i,j)\cdot \sigma(i\cdot j)}\) 多组数据\(n \le 10^6, ...

  5. js小知识点

    1.setTimeout(function(num){ alert(num);},1000,123); 第三个参数为实参. 2.拼接字符串: document.body.innerHTML = '&l ...

  6. Ubuntu的Java环境变量

    新架构要上线了,这两天开始准备分析一下了,今天是直接进到JAVA_HOME的lib目录执行的java -cp sa-jdi.jar sun.jvm.hotspot.HSDB,然后报了个错: 这是哪来的 ...

  7. 多路复用select

    多路复用I/O:一个执行体监视多个文件描述符对象的状态是否改变,一旦改变通知其他执行体来实现. 基本思想: 1. 先构造一张有关描述符的表,然后调用一个函数,当这些文件描述符中的一个或者多个已准备好进 ...

  8. Tomcat服务器的配置

    本地安装的Tomcat服务器版本是 Apache Tomcat/7.0.42 启动 localhost 使用Tomcat的前提是安装了jdk,我在本地安装了jdk7.Tomcat服务器的文件目录为F: ...

  9. centos7使用docker部署gitlab-ce-zh应用

    1.国内拉取镜像比较慢,所以这里采用DaoCloud源. # curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http ...

  10. 关于Frame加背景的那点事?

    最近新生问我一个问题,继承自Frame(可不是继承自JFrame)的框架怎样添加背景图片, 真够坑的,当时还真懵了,废话少说直接上代码: import java.awt.*; import java. ...