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中,"==="叫做严格运算符,"=="叫做相等运算符. 它们的区别是相等运算符(==)比较两个值是否相等,严格相等运算符(===)比较它们是否为" ...
随机推荐
- javascript设计模式开篇:Javascript 接口的实现
javascript语言不像java. c#. c++等面向对象语言那样有完备的接口支持,在javascript中,接口的实现有三种方式,分别为注释描述.属性检查.鸭式变形.注释描述实现起来最为简单, ...
- javascript私有方法揭示为公有方法
揭示模式可用于将私有方法暴露为公共方法.当为了对象的运转而将所有功能放置在一个对象中以及想尽可能地保护该对象,这种揭示模式就非常有用. 板栗: var myarray; (function(){ va ...
- CMSZU站群管理系统 升级到 v1.8 [源码下载]
CmsZu 简介 CMSZU即CMS族,是个网站内容管理平台,基于PHP+MYSQL技术创建,源码开放. CmsZu 更新说明 V1.8 修改了些bug 完善数据库管理 -> 数据库表管理的 字 ...
- CS229 笔记02
CS229 笔记02 公式推导 $ {\text {For simplicity, Let }} A, B, C \in {\Bbb {R}}^{n \times n}. $ $ {\bf {\t ...
- 第13月第12天 Constraints priority
1.Constraints priority 将evInputView的高度约束的priority设为750,evInputView的inputTextView如果不设高度约束,那么高度就是defau ...
- 2017/05/17 java 基础 随笔
- 315道Python面试题答案
目录 Python基础篇 1:为什么学习Python 2:通过什么途径学习Python 3:谈谈对Python和其他语言的区别 Python的优势: 4:简述解释型和编译型编程语言 5:Python的 ...
- css-position属性实例2
position 1) fixed 固定在页面某个位置 2) absolute 也可以固定在某个位置,一般结合relative使用 注: 1)fixed和absoulue区别,假如一个div固定在右下 ...
- 学会用各种姿势备份MySQL数据库
学会用各种姿势备份MySQL数据库 前言 为什么需要备份数据? 数据的备份类型 MySQL备份数据的方式 备份需要考虑的问题 设计合适的备份策略 实战演练 使用cp进行备份 使用mysqldump+复 ...
- CF1064B 【Equations of Mathematical Magic】
题目要求解$a-(a\oplus x)-x=0$的解$x$的个数 移项得$a-x=a\oplus x$ $a$的二进制形式,应该是一个$01$串,异或的过程是不能影响到两个不同的位的,所以我们按位考虑 ...