运算符优先级 (JavaScript)
运算符优先级描述了在计算表达式时执行运算的顺序。先执行具有较高优先级的运算,然后执行较低优先级的运算。例如,先执行相乘,再执行相加。
下表列出了 JavaScript 运算符,并按优先级顺序从高到低排列。具有相同优先级的运算符按从左至右的顺序计算。
|
运算符 |
说明 |
|---|---|
|
.[ ] ( ) |
字段访问、数组索引、函数调用和表达式分组 |
|
++ -- - ~ ! delete new typeof void |
一元运算符、返回数据类型、对象创建、未定义的值 |
|
* / % |
相乘、相除、求余数 |
|
+ - + |
相加、相减、字符串串联 |
|
<< >> >>> |
移位 |
|
< <= > >= instanceof |
小于、小于或等于、大于、大于或等于、是否为特定类的实例 |
|
== != === !== |
相等、不相等、全等,不全等 |
|
& |
按位“与” |
|
^ |
按位“异或” |
|
| |
按位“或” |
|
&& |
逻辑“与” |
|
|| |
逻辑“或” |
|
?: |
条件运算 |
|
= OP= |
赋值、赋值运算(如 += 和 &=) |
|
, |
多个计算 |
圆括号用于改变由运算符优先级确定的计算顺序。这就是说,先计算完圆括号内的表达式,然后再将它的值用于表达式的其余部分。
例如:
var result = 78 * 96 + 3;
document.write(result);
document.write("<br/>"); result = 78 * (9 + 3);
document.write(result); // Output:
// 7491
// 936
第一个表达式中有 3 个运算符:=、* 和 +。按照运算符优先级规则,按以下顺序计算:*、+、=(78 * 96 = 7488、7488 + 3 = 7491)。
在第二个表达式中,先计算 ( ) 运算符,因此,先计算加法表达式,再计算乘法表达式(9 + 3 = 12,12 * 78 = 936)。
以下示例演示包括多个运算符并解析为 true 的语句。
var num = 10;
if(5 == num / 2 && (2 + 2 * num).toString() === "22") {
document.write(true);
}
// Output:
// true
运算符按以下顺序计算:用于分组的 ( )、*、+(分组内)、函数中的 "."、函数中的 ( )、/、==、=== 和 &&。
运算符优先级 (JavaScript)的更多相关文章
- JavaScript运算符优先级引起的bug
[下面是昨天发给同事的邮件,为防止泄露商业机密,隐去了项目名和变量名] ==================================================== 昨天发现Nx代码中的一 ...
- (转)JavaScript中的运算符优先级
JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低的优先级列出J ...
- javascript 运算符优先级
JavaScript 运算符优先级(从高到低) https://github.com/xhlwill/blog/issues/16 今天把js函数转换为python 函数时,发现在js运算符优先级这边 ...
- JavaScript基础之运算符及全面的运算符优先级总结
算数运算符: 加+,减—,乘*,除/,求余%,加加++,减减——, 加减乘除求余运算与数学上的用法完全一样. 不过,加号+还有连接字符串的作用,其他运算符还可以将字符串数字转换成数值型,参见JavaS ...
- js 运算符优先级
在看jquery源码,仔细看入口函数的时候,有点懵了.看到与或.多重三目,傻傻的分不清,就代码仔细的区分下运算符优先级,以前都是呼呼的飘过.看来任何一个细节都不能忽略,不然效率极低.. !functi ...
- js变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属性优先级
原文出自:http://www.cnblogs.com/xxcanghai/p/5189353.html作者:小小沧海 题目如下: function Foo() { getName = functio ...
- c/c++系列的运算符优先级总结
经常写程序的时候,遇到运算符优先级的问题,令我汗颜的是,查书的次数挺多的……狠狠心,总结下.不过还要结合大量的编程实践来深入脑海. 1.首先永远忘不了的是,逗号运算符级别最低,毫无争议的还有()括起来 ...
- C语言运算符优先级和口诀(转)
一共有十五个优先级: 1 () [] . -> 2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof 3 ...
- 一道c语言运算符优先级问题
一道c语言运算符优先级问题 #include <iostream> using namespace std; int main() { char test[] = {"This ...
随机推荐
- 关于Windows与Linux下32位与64位开发中的数据类型长度的一点汇总
32位与64位的数据类型长度是不一样的,而且windows和linux也有些许区别,下面把64位下的数据长度列表如下(无符号unsigned和有符号的长度一样): linux64 ...
- Java 处理批量数据提交
在Java web开发过程中,处理表单数据是很重要一部分,常见的是form post处理单条数据的,但也会遇到一次提交多条数据到服务器的,如下:
- Python 转义字符中没有这个 「\e」 !
问题来源于技术交流群里: 常见的转义字符 \n.\t 之类的我们都知道什么意思,但是这个 \e 是什么意思呢? 抱着一股钻研的精神,我搜了一把. 结果,所有的页面里都是只有一句简单的 \e 代表转义. ...
- poj 2000 Gold Coins(水题)
一.Description The king pays his loyal knight in gold coins. On the first day of his service, the kni ...
- JSP标签和EL表达式
1.jsp标签: sun原生的,直接jsp使用 <jsp:include> -- 实现页面包含,动态包含 <jsp:include page="/index.jsp&quo ...
- java web 基础 json 和 javaBean转化
github地址: https://github.com/liufeiSAP/JavaWebStudy 实体类: package com.study.demo.domain; import com.f ...
- jdbc 新认识
以前一直用jdbc,没有深入看看,原来jdbc是java自己的接口规范,db厂商按照接口进行开发对应的驱动,jdbc可以获取db中的元信息,执行sql,获取结果,操作db等等.示例如下. public ...
- python并发编程之多线程2死锁与递归锁,信号量等
一.死锁现象与递归锁 进程也是有死锁的 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用, 这些永远在互相等待的进程称为死锁进程 如下就是死锁 ...
- 创建Ajax
Ajax的全称是Asynchronous javascript and XML = 异步传输 + JS + XML 不需要刷新页面就可以获取新的数据 创建步骤: (1)创建XML对象也就 ...
- 使用DOS指修改文件名
需求:将文件名中的特殊字符#和~去掉 文件夹路径如下: 开始->运行->在对话框中输入字母“cmd”,进入dos模式 输入命令行“cd c:\test”然后回车,再输入命令行“dir /b ...