首页 > 其他分享 >JS 操作符

JS 操作符

时间:2022-09-29 16:39:13浏览次数:70  
标签:操作数 Infinity NaN 数值 JS 操作符 null


JS中的操作符与其他语言大体上是相似的,这里总结一些需要注意的地方.

一元操作符

  • 一元加(+) 在数值前面放置​​+​​​对数值没有任何影响,对非数值使用​​+​​​,具有​​Number()​​转型函数的效果.
  • 一元减(-)操作符 应用于数值,该值会变成负数.应用于非数值,会先遵循与​​+​​相同的规则,然后转换为负数

布尔操作符

  • 逻辑非(!) 在对非Boolean类型的数据使用逻辑非,会先转换为布尔值,再求反。 所以使用两个​​!​​​速度会模拟​​Boolean()​​的行为.
  • 逻辑与(&&) 在有一个操作数不是布尔值的情况下,逻辑与操作不一定返回布尔值,遵循以下规则:
  1. 第一个是对象,返回第二个操作数
  2. 第二个是对象,则只有第一个是true时才返回该对象
  3. 第一个是​​null, undefined, NaN​​​,则返回相应的​​null, undefined, NaN​
  • 逻辑或(||) 在有一个操作数不是布尔值的情况下,不一定会返回布尔值,遵循以下规则:
  1. 第一个是对象,则返回第一个操作数
  2. 第一个求值结果为false,则返回第二个操作数
  3. 两个操作数都是​​null, undefined, NaN​​​,则返回相应的​​null, undefined, NaN​

乘性操作符

在操作数不为数值的时候,会执行自动的类型转换.

  • 乘法() 除了“遵循NaN参与的任何操作,结果都是NaN”*之外,其他情况大部分都是正常值或者​​Infinity​​或​​-Infinity​​. 只有一种情况:
    Infinity与0相乘,结果为NaN
  • 除法(/) 有两种情况是NaN
  1. 零被零除–> NaN
  2. Infinity 被 Infinity 除–> NaN
  • 取模(%)
  1. 被除数无穷大而除数有限大,则为NaN
  2. 被除数无穷大而除数为0,则为NaN
  3. Infinity被Infinity除,则为NaN
  4. 被除数有限大而除数无穷大,结果为被除数
  5. 被除数为0,结果为0

加性操作符

  • 加法
  1. Infinity加-Infinity,结果为NaN
  2. 有一个是字符串,则另一个数转换为字符串,然后拼接
  3. 如果有一个操作数是对象或者数值或布尔值,另一个操作数是字符串,则将非字符串转换为字符串,对于undefined和null,使用​​String()​​转换为字符串
  • 减法
  1. Infinity - Infinity = NaN
  2. -Infinity - (-Infinity) = NaN
  3. 有一个操作数是数值,另一个操作数为非数值,则转换为数值.

总结:加法中,如果有一个字符串,则优先将另一个转换为字符串,减法中,如果有一个是数值,则优先将另一个转换为数值

关系操作符

关系操作符有小于(<),大于(>),小于等于(<=)和大于等于(>=),优先比较的数据类型是数值,返回布尔值

  1. 两个操作数都是数值,则比较数值大小
  2. 两个操作数都是字符串,则比较第一个字符的编码
  3. 有一个数值,将另一个转换为数值,进行比较
  4. 注意:比较时 null转换为0 ,undefined转换为NaN

相等操作符

主要分为相等(==)和全等(===),区别在于相等操作符操作之前会进行类型的转换,全等操作符不会进行类型转换。 相等操作符优先进行数值的比较

  1. 一个操作数是字符串,另一个是数值,则转换为数值再比较
  2. 一个是对象,则调用​​valueOf()​​方法,再比较
  3. 在比较相等性之前,null和undefined不能转换为其他任何值,而在关系比较时,null会转换为0,undefined会转换为NaN 如下
  var a = null;
console.log(a == 0); //false,因为null不能转化为其他
console.log(a >= 0); // true, 因为在关系操作符中,null转换为0
console.log(a <= 0); // true, 因为在关系操作符中,null转换为0
  1. 在对象的比较中,只有两个操作数指向同一个对象,才会返回true
  2. 全等(===)操作符则两个操作数必须完全相同才会返回true

条件操作符

就是常见的​​expression ? true_value : false_value​​了

赋值操作符

  • ​*=​
  • ​/=​
  • ​+=​
  • ​-=​
  • ​%=​
  • ​<<=​
  • ​>>=​
  • ​>>>=​​这些操作符只是简单而已,没有性能上的提升

逗号操作符

使用逗号操作符可以在一条语句中执行多个操作

var num = 1,num2 = 2,num3 = 3;

还可以用于赋值,在用于赋值时,总会返回最后一项

var num = (5,4,3,2,0);    // num的值为0

​https://zhuqingguang.github.io/2017/06/01/LearningJS-02/​

标签:操作数,Infinity,NaN,数值,JS,操作符,null
From: https://blog.51cto.com/u_15812097/5723416

相关文章

  • JS Element.scrollIntoView() 滚动元素的父容器
    Element接口的scrollIntoView()方法会滚动元素的父容器,使被调用scrollIntoView()的元素对用户可见。文档语法element.scrollIntoView();//等同于element.scrollIntoView(......
  • JS 正则表达式
    普通字符普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。字符描述[ABC]匹配 [...] 中......
  • 19.JS的标签查找
    1.getElementById(通过ID查找)2.getElementsByClassName(通过类名查找)3.getElementsByTagName(通过标签名查找)4.getElementsByName(通过Name属性查找)例:document.get......
  • debian/ubuntu下安装nodejs npm
    wgethttps://nodejs.org/dist/v16.17.1/node-v16.17.1-linux-x64.tar.xz nodejs官网下载地址,目前最新版,以后有更新就换新的地址,wget下来,解压tar-xvfnode-v16.17.1-li......
  • 22.实例:利用JS点击百度翻译
    Dimtemp,hWeb,sRet,待翻译的文字//变量赋值待翻译的文字="早上好"//绑定浏览器hWeb=WebBrowser.BindBrowser("chrome",10000,{"bContinueOnError":false,"......
  • 09.利用JS在输入框里输入文字
    例如在百度输入框里输入“王文忠”:在网页上控制台里可输入:document.querySelector("#kw").value="王文忠"其中的kw是输入框的ID 也可以输入:document.querySelector(......
  • 10.利用JS点击元素
    例1:利用JS点击“百度一下”按钮,执行JS代码为:function(){document.querySelector("#su").click();return123}其中su为按钮的元素ID变量状态的代码:"function()document......
  • 运用D3js开发关系图谱
    开发内容实现节点头像设置及点击事件实现右击节点展开菜单功能实现关系线有无剪头实现关系线文本显示及点击事件github地址https://github.com/lvlq73/relationD3......
  • nodejs stream 背压处理学习
    内容是nodejs官方的,对于需要开发自己的stream是很值得学习参考的参考资料​​https://nodejs.org/en/docs/guides/backpressuring-in-streams/​​​​https://nodejs.org......
  • 数维图API文档 SovitJS编辑器集成API方法
    SovitChart、Sovit2D、Sovit3D已经在众多行业领域被使用,也受到了大家的一致好评,为了更好的二次开发,不少用户想把我们的编辑器集成在自己的系统中,强烈要求我们开放API接口,经......