JavaScript基础之运算符及全面的运算符优先级总结
算数运算符:
加+,减—,乘*,除/,求余%,加加++,减减——,
加减乘除求余运算与数学上的用法完全一样。
不过,加号+还有连接字符串的作用,其他运算符还可以将字符串数字转换成数值型,参见JavaScript中数据类型转换总结中的隐式转换部分。
++,——分为前置和后置,前置表示在使用该变量之前加/减1,后置表示在使用之后加/减1。
逻辑运算符:
1.&&: 与运算, 当与运算的两个内容都为true的时候,结果为true,只要有一个内容为false,结果都是false,&& 可以读作“并且”
2.||: 或运算, 当或运算的两个内容都为false的时候,结果为false,只要有一个内容为true,结果都是true,|| 可以读作“或者”
3.!: 非运算, 取反运算,当内容为true时,取反结果为false,当内容为false时,取反结果为true
补充:
&&与||的其他用法
&&
如果两个操作数都不是布尔类型
且两个数值转换成布尔类型都是true,返回第二个操作数
如果有一个操作数转换成布尔类型是false,返回这个数
var b=undefined&&null
console.log(b);
返回undefined
||
如果两个操作数都不是布尔类型
第一个数转换成布尔类型为true,则不往下看,返回第一个数
如果第二个数转换成布尔类型为true,则返回第二个数值。
比较运算符:
>, <, >= ,<=, == ,!=,===,!==
>, <, >= ,<=和数学里表示的含义完全一样。下面四个运算符刚开始接触会有点迷惑。
== 相等操作符
如果两个操作数相等,则返回 true。
!= 不相等操作符
如果两个操作数不相等,则返回 true。
这两个操作符都会先转换操作数(通常称为强制转型),然后再比较它们的相等性。在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则:
1、 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false 转换为 0,而true 转换为 1;
2、如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;
3、 如果一个操作数是对象,另一个操作数不是,则调用对象的 valueOf()方法,用得到的基本类型值按照前面的规则进行比较;
这两个操作符在进行比较时则要遵循下列规则。
1、 null 和 undefined 是相等的。
2、 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值。
3、 如果有一个操作数是 NaN,则相等操作符返回 false,而不相等操作符返回 true。重要提示:
即使两个操作数都是 NaN,相等操作符也返回 false;因为按照规则, NaN 不等于 NaN。
如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,
则相等操作符返回 true;否则,返回 false。
下表列出了一些特殊情况及比较结果:
|
表 达 式 值 |
表 达 式 值 |
|
null == undefined true |
true == 1 true |
=== 全等操作符
在两个操作数未经转换就相等的情况下返回 true。即数值和类型都相同。
var result1 = ("55" == 55); //true,因为转换后相等
var result2 = ("55" === 55); //false,因为不同的数据类型不相等
!== 不全等操作符
在两个操作数未经转换就不相等的情况下返回 true。数据类型不同就不等。
var result1 = ("55" != 55); //false,因为转换后相等
var result2 = ("55" !== 55); //true,因为不同的数据类型不相等
赋值运算符:
=,+=,-=,*=,/=
简单的赋值操作符由等于号(=)表示,其作用就是把右侧的值赋给左侧的变量。
如果在等于号(=)前面再添加乘性操作符、加性操作符或位操作符,就可以完成复合赋值操作。
num = num + 10; 等同于num += 10;
设计这些操作符的主要目的就是简化赋值操作。使用它们不会带来任何性能的提升。
三元运算符:
? :
举个例子:
var max = (num1 > num2) ? num1 : num2;
在这个例子中, max 中将会保存一个最大的值。这个表达式的意思是:如果 num1 大于 num2(关系表达式返回 true),则将 num1 的值赋给 max;如果 num1 小于或等于 num2(关系表达式返回 false),则将 num2 的值赋给 max。
位运算符:
JavaScript也有位运算符,需要先转换成16进制数进行运算,在开发中好像还没有用到过,了解一下即可。
JavaScript中运算符优先级
|
优先级 |
运算类型 |
关联性 |
运算符 |
|
20 |
n/a |
( … ) |
|
|
19 |
从左到右 |
… . … |
|
|
从左到右 |
… [ … ] |
||
|
new (带参数列表) |
n/a |
new … ( … ) |
|
|
从左到右 |
… ( … ) |
||
|
18 |
new (无参数列表) |
从右到左 |
new … |
|
17 |
后置递增(运算符在后) |
n/a |
… ++ |
|
后置递减(运算符在后) |
n/a |
… -- |
|
|
16 |
从右到左 |
! … |
|
|
从右到左 |
~ … |
||
|
从右到左 |
+ … |
||
|
从右到左 |
- … |
||
|
从右到左 |
++ … |
||
|
从右到左 |
-- … |
||
|
从右到左 |
typeof … |
||
|
从右到左 |
void … |
||
|
从右到左 |
delete … |
||
|
15 |
从右到左 |
… ** … |
|
|
14 |
从左到右 |
… * … |
|
|
从左到右 |
… / … |
||
|
从左到右 |
… % … |
||
|
13 |
从左到右 |
… + … |
|
|
从左到右 |
… - … |
||
|
12 |
从左到右 |
… << … |
|
|
从左到右 |
… >> … |
||
|
从左到右 |
… >>> … |
||
|
11 |
从左到右 |
… < … |
|
|
从左到右 |
… <= … |
||
|
从左到右 |
… > … |
||
|
从左到右 |
… >= … |
||
|
从左到右 |
… in … |
||
|
从左到右 |
… instanceof … |
||
|
10 |
从左到右 |
… == … |
|
|
从左到右 |
… != … |
||
|
从左到右 |
… === … |
||
|
从左到右 |
… !== … |
||
|
9 |
从左到右 |
… & … |
|
|
8 |
从左到右 |
… ^ … |
|
|
7 |
从左到右 |
… | … |
|
|
6 |
从左到右 |
… && … |
|
|
5 |
从左到右 |
… || … |
|
|
4 |
从右到左 |
… ? … : … |
|
|
3 |
从右到左 |
… = … |
|
|
… += … |
|||
|
… -= … |
|||
|
… *= … |
|||
|
… /= … |
|||
|
… %= … |
|||
|
… <<= … |
|||
|
… >>= … |
|||
|
… >>>= … |
|||
|
… &= … |
|||
|
… ^= … |
|||
|
… |= … |
|||
|
2 |
从右到左 |
yield … |
|
|
从右到左 |
yield* … |
||
|
1 |
n/a |
... … |
|
|
0 |
从左到右 |
… , … |
JavaScript基础之运算符及全面的运算符优先级总结的更多相关文章
- JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}
Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...
- JavaScript基础&实战(2)js中的强制类型转换、运算符、关系运算符、逻辑运算符、条件运算符
文章目录 1.强制类型转换Number 1.1 代码 1.2 测试结果 2.进制表示 2.1 代码 2.2 测试结果 3.强制类型转换为Boolea 3.1 代码 3.2 测试结果 4.运算符 4.1 ...
- JavaScript基础——使用运算符
JavaScript运算符允许你改变一个变量的值.你已经熟悉了用于赋值给变量的=运算符.JavaScript提供了几种不同的运算符,它们可以划分为两大类:算数运算符和赋值运算符. 1.算数运算符 你可 ...
- JavaScript基础3——关于运算符
算数运算符 算数运算符有+.-.*./.%.++.--.=.类似+=的运算符,其使用方式与编程语言(Java.C++.C#等)基本一样.给定 y=5,下面的表格解释了这些算术运算符: 运算符 描述 例 ...
- JavaScript 基础(一) - JavaScript的引入方式,JavaScript 变量命名规则,JS 的五种基本数据类型,ECMAScript 算数运算符,逻辑运算符
JavaScript的引入方式 直接编写 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- Javascript基础--运算符与表达式
一.运算符 1.运算符分类: 按功能:算术运算符:+.-.*./.%.++.-- 例:12+12-11+5*6+20/5+5%2+(5%-2)+(-5++2)+(a++)+(++a)+(--a)+(a ...
- JavaScript 基础 if switch 弹窗 运算符
脚本语言最重要的几个部分: 数据类型 运算符 控制语句 数组 方法(函数) 一.基础知识 关键字:系统定义 有意义的名字如 background link 等 标识符:自己定 比如class的名字a ...
- 前端(十一)—— JavaScript基础:JS存在的位置、JS变量定义、调试方式、JS数据类型、运算符
JS存在的位置.JS变量定义.调试方式.JS数据类型.运算符 一.JS语言介绍 1.概念 浏览器脚本语言 可以编写运行在浏览器上的代码程序 属于解释性.弱语言类型编程语言 2.组成 ES语法:ECMA ...
- java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
- Javascript 中 ==(相等运算符) 和 ===(严格相等运算符) 区别
在JS中,"==="叫做严格运算符,"=="叫做相等运算符. 它们的区别是相等运算符(==)比较两个值是否相等,严格相等运算符(===)比较它们是否为" ...
随机推荐
- 浅谈 JSON 那些被转义的字符们
其实,之前我一直以为 JSON 会把 ASCII 可显示字符以外的统统转义为 Unicode,直到有一次我用 JSON.stringify 才发现,其实是 PHP 为我们想的太周到了. 我以前是一位 ...
- Angular 下的 function
angular.lowercas 将指定的字符串转换为小写的 Usage(使用方法) angular.lowercase(string); Arguments Param Type Details ...
- 【转】用CornerStone配置SVN,HTTP及svn简单使用说明
已经安装了的小伙伴请直接看三步骤 一.下载地址 CornerStoneV2.6:http://pan.baidu.com/s/1qWEsEbM密码:www.macx.cn 二.安装破解方法 1.安装之 ...
- 第5月第27天 cocos2d
1. 流程是这样的: 在CCApplication的run函数中,显示设备链调用相应的场景显示函数drawScene来绘制场景,然后调用了CCScheduler的update函数,在这个函数里,对所有 ...
- 由一篇吐槽对String空字符串判断的文章所引发的碎碎念
一.起因 最近有篇关于String空字符串判断的文章火了,老是看到这篇文章,既然如此我也只好认真看了下:程序员晒出一段代码引来无数网友狂喷!网友:你就活该当码农! 我也觉得这段代码写的不怎么的,首先程 ...
- Python基础教程-第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Python基础教程-第3版 备用下载:Python基础教程-第3版
- Linux系统基本命令
要区分大小写 uname 显示版本信息(同win2K的 ver) dir 显示当前目录文件 ls -al 显示包括隐藏文件(同win2K的 dir) pwd 查询当前所在的目录位置 cd .. 回到上 ...
- cefsharp保存文件为pdf
var success = await browserViewModel.WebBrowser.PrintToPdfAsync(dialog.FileName, new PdfPrintSetting ...
- JPA 菜鸟教程 15 继承-一个表-SINGLE_TABLE
原地址:http://blog.csdn.net/JE_GE/article/details/53678422 继承映射策略 一个类继承结构一个表的策略,最终只生成一个表,这是继承映射的默认策略. 举 ...
- InnoDB master thread工作原理
我们简单交流下InnoDB master thread学习,有兴趣的朋友可以参考<<MySQL技术内蒙--InnoDB存储引擎第二版>> void master_thread( ...