运算符优先级 (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 ...
随机推荐
- Android: 一个两点触控的案例
下面是一个两点触控的案例代码: package com.zzj; import android.app.Activity; import android.os.Bundle; import andro ...
- Failed to install xxxx.apk on device 'emulator-5554!
异常信息:[HelloAndroid] Performing com.example.helloandroid.HelloAndroid activity launch[HelloAndroid] U ...
- Agc004_C AND Grid
传送门 题目大意 给定一个$N\times M\space(N,M\leq 500)$的网格,有一些格子是紫色,保证边界没有颜色. 构造两个$N\times M$的网格$A,B$,在$A$中染红色在$ ...
- linux绑定多个ip(转载)
在Linux下有时候需要给一个网卡绑定多个IP,本文介绍在Redhat系列(redhat,Fedora Core,Centos)中的实现方法和一种在Gentoo等其他Linux中普遍适用的方法. 1. ...
- 卸载DCOS
再次安装,已经是隔了两天,我打算换一台机器作为boot机器,但是发现报错,告知部署设备已经安装了dcos:看来需要卸载:uninstall-master.sh /opt/mesosphere/bin/ ...
- 牛客网字节跳动冬令营网络赛J Sortable Path on Tree —— 点分治
题目:https://ac.nowcoder.com/acm/contest/296/J 用点分治: 记录了值起伏的形态,二元组 (x,y) 表示有 x 个小于号,y 个大于号: 因为小于号和大于号都 ...
- 多校联合训练&hdu5791 Two
hdu5791 dp[i][j]表示的是序列A前i个数字和序列B前j个数字的公共子序列的总个数,那么的dp公式就可以这么表示 理解一下此公式若最尾部的a[i]和b[j]相等的话,那么单独的a[i]和b ...
- linux使用JMETER进行分布式压力测试
1. 下载jmeter tgz文件 http://jmeter.apache.org/download_jmeter.cgi 2. 登录linux服务器,创建jmeter目录,rz上传jmeter ...
- rails常用命令示例
数据迁移命令 1.一下命令执行后会在db\migrate下产生同名数据迁移文件(文件内容可自行修改,基本语法见“数据迁移文件”部分) 创建model:rails generate model user ...
- springMVC绑定json参数之一
一.SpringMVC @RequestBody接收Json对象字符串 以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现, ...