JavaScript中的各种操作符使用总结


Posted in Javascript onMay 26, 2016

一元操作符
只能操作一个值的操作符叫一元操作符。
一元操作符是ECMAScript中最简单的操作符。

1.递增和递减操作符
递增递减操作符直接借鉴C,而且各有两个版本:前置型和后置型。顾明思义,前置型应该让位于要操作的变量之前,而后置型应该位于要操作的变量之后。
前置型:

var num1 = 1;
var num2 = 2;
var num3 = ++num1 + num2;//4

后置型:

var num1 = 1;
var num2 = 2;
var num3 = num1++ + num2;//3

上述两段代码得出了不同的结果,原因就在与,后置递增递减与前置递增递减有一个非常重要的区别,即后置递增递减操作是在包含它们的语句被求值之后才执行的。

适用范围:
前置递增递减与后置递增递减所有这四个操作符对任何值都适用。应用于不同值时,该操作符会像Number()转型函数一样对值进行转换,转化后进行加减1的操作。

2.一元加和减操作符
一元加和减操作符主要用于基本的算术运算,也可以用于转换数据类型(该操作符会像Number()转型函数一样对这个值进行转换)。

布尔操作符
布尔操作符一共有三个:非(NOT)、与(AND)、或(OR)。

1.逻辑非
逻辑非操作符由一个叹号表示(!),可以应用于ECMAScript中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。

同时使用两个逻辑非操作符,实际上就会模拟Boolean()转型函数的行为

2.逻辑与
逻辑与操作符由两个和号(&&)表示,有两个操作数且可运用于任何类型的操作数。逻辑与属于短路操作,即如果第一个操作数求值结果是false,那么就不会对第二个操作数求值。
当两个值都为真值时,结果为true。当两个值为一真一假时,结果为false。当两个值都为假值时,返回false。
其中一个值不是布尔值时:遵循下列规则

第一个操作数为假,返回第一个;

第一个操作数为真的时候,返回第二个。
如果第一个操作数是对象,则返回第二个操作数

var a = {b:1};
a && 'ss'//"ss"

如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象

'ss' && a//Object {b: 1}

如果两个操作数都是对象,则返回第二操作数

var c = {d:2};
c && a//Object {b: 1}

(1)如果有一个操作数是null,则返回null
(2)如果有一个操作数是NaN,则返回NaN
(3)如果有一个操作数是undefined,则返回undefinded

3.逻辑或
与逻辑与操作符相似,逻辑或操作符也是短路操作符。也就是说,如果第一个操作数的求值结果为true,就不会对第二个操作数求值了。

(1)第一个操作数为真,返回第一个
(2)第一个操作数为假,返回第二个
乘性操作符
ECMAScript定义了3个乘性操作符:乘法、除法和模

Infinity*0//NaN
0/0//NaN
Infinity/Infinity//NaN

加性操作符
1.加法(转字符串)
两个操作符都是数值
执行常规的加法计算。

Infinity + -Infinity//NaN

如果有一个操作数是字符串

如果两个操作符都是字符串,则将第二个操作符与第一个操作符拼接起来
如果只有一个操作符是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来。
如果这个操作数是对象、数值或布尔值,则调用它们的toString()方法取得相应的字符串值,然后再应用前面关于字符串的规则。对于null和undefined,则分别调用String()函数并取得字符串"undefined"和"null"。

2 + '' //"2"

2.减法(转数值)
如果两个操作数都是数值
执行常规的算术减发操作并返回结果,如果有一个操作数是NaN,则结果是NaN

Infinity - Infinity//NaN

如果有一个操作数不是数值

如果有一个操作数是字符串、布尔值、null或undefined,则先在后台调用Number()函数将其转换为数值,然后再根据前面的规则执行减法计算。如果转化的结果是NaN,则减法的结果就是NaN。
如果有一个操作数是对象,则调用对象的valueOf()方法以取得表示该对象的数值。如果得到的值是NaN,则减法的结果是NaN。如果对象没有valueOf()方法则调用其toString()方法并将得到的字符串转换为数值。

5 - true//4

关系操作符
如果两个操作数都是数值,则执行数值比较
如果两个操作数都是字符串,则比较两个字符串对应的字符编码值
如果一个操作数是数值,则将另一个操作数转换为数值,然后执行数值比较

var result = '23' < '3'//true
var result = '23' < 3//false

相等操作符
1.相等和不相等
先转换再比较

(1)如果有一个操作数是布尔值,则在比较相等性之前,先将其转换为数值
(2)如果有一个操作数是字符串,另一个操作数是数值,先将其转换为数值
(3)如果有一个操作数是对象,另一个不是,则调用对象的valueOf()方法,用得到的基本类型值按前面的基本规则进行比较
null和undefined是相等的
要比较相等性之前不能将null和undefined转换为任何其他值
如果两个操作数都是NaN,相等操作符也返回false,按规则,NaN不等于NaN

2.全等和不全等
仅比较而不转换

"55" !== 55 //true

条件操作符

variable = boolean_expression ? true_value : false_value

本质上,这段代码的含义就是基于对boolean_expression求值的结果,决定给变量variable赋什么值。如果求值结果为true,则给变量赋true_value;如果求值结果为false,则给变量variable赋false_value值。

赋值操作符
简单的赋值操作符由等号表示,其作用就是把右侧的值赋给左侧的变量。

逗号操作符
逗号操作符多用于声明多个变量;但除此之外,逗号操作符还用来赋值。在用于赋值时,逗号操作符总会返回表达式中的最后一项。

Javascript 相关文章推荐
Google韩国首页图标动画效果
Aug 26 Javascript
符合标准的js表单提交的代码
Sep 13 Javascript
基于jquery的表头固定的若干方法
Jan 27 Javascript
js Map List 遍历使用示例
Jul 10 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
Mar 04 Javascript
JS实现可点击展开与关闭的左侧广告代码
Sep 02 Javascript
Jquery时间轴特效(三种不同类型)
Nov 02 Javascript
jquery实现tab键进行选择后enter键触发click行为
Mar 29 jQuery
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
详解jquery和vue对比
Apr 16 jQuery
深入浅析JavaScript中的in关键字和for-in循环
Apr 20 Javascript
vue 使用原生组件上传图片的实例
Sep 08 Javascript
浅析JavaScript中的对象类型Object
May 26 #Javascript
简单总结JavaScript中的String字符串类型
May 26 #Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
May 26 #Javascript
JavaScript中的Number数字类型学习笔记
May 26 #Javascript
BootStrap中的table实现数据填充与分页应用小结
May 26 #Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
May 26 #Javascript
JS代码实现table数据分页效果
May 26 #Javascript
You might like
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
php xml 入门学习资料
2011/01/01 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
vue中七牛插件使用的实例代码
2017/07/28 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
基于jquery.page.js实现分页效果
2018/01/01 jQuery
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Python列表切片操作实例总结
2019/02/19 Python
Python之Sklearn使用入门教程
2021/02/19 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
JNI的定义
2012/11/25 面试题
广州某公司软件工程师面试题
2014/12/22 面试题
西式结婚主持词
2014/03/14 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
创业计划书之面包店
2019/09/12 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python