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 相关文章推荐
Javascript的时间戳和php的时间戳转换注意事项
Apr 12 Javascript
jquery实现输入框动态增减的实例代码
Jul 14 Javascript
document.getElementById获取控件对象为空的解决方法
Nov 20 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
May 10 Javascript
详解Angular 4.x NgTemplateOutlet
May 24 Javascript
Vue学习之路之登录注册实例代码
Jul 06 Javascript
前端把html表格生成为excel表格的实例
Sep 19 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
Aug 13 Javascript
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
JS实现的新闻列表自动滚动效果示例
Jan 30 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
Jul 13 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
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
js保留小数点后几位的写法
2014/01/03 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
秋季红领巾广播稿
2014/01/27 职场文书
学校与家长安全责任书
2014/07/23 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
网络妈妈观后感
2015/06/08 职场文书
读书笔记怎么写
2015/07/01 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python