微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

一元操作符

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

1.递增和递减操作符

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

rush:js;"> var num1 = 1; var num2 = 2; var num3 = ++num1 + num2;//4

后置型:

rush:js;"> 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。 其中一个值不是布尔值时:遵循下列规则

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

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

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

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

rush:js;"> 'ss' && a//Object {b: 1}

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

rush:js;"> var c = {d:2}; c && a//Object {b: 1}

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

3.逻辑或

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

(1)第一个操作数为真,返回第一个 (2)第一个操作数为假,返回第二个

乘性操作符

ECMAScript定义了3个乘性操作符:乘法、除法和模

rush:js;"> Infinity*0//NaN 0/0//NaN Infinity/Infinity//NaN

加性操作符 1.加法(转字符串)

两个操作符都是数值 执行常规的加法计算。

rush:js;"> Infinity + -Infinity//NaN

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

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

rush:js;"> 2 + '' //"2"

2.减法(转数值)

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

rush:js;"> Infinity - Infinity//NaN

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

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

rush:js;"> 5 - true//4

关系操作符

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

rush:js;"> var result = '23' < '3'//true var result = '23' < 3//false

相等操作符 1.相等和不相等

先转换再比较

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

2.全等和不全等

仅比较而不转换

rush:js;"> "55" !== 55 //true

条件操作符

rush:js;"> variable = boolean_expression ? true_value : false_value

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

赋值操作符

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高