运算元 —— 运算符应用的对象。比如说乘法运算 5 * 2,有两个运算元:左运算元 5 和右运算元 2。有时候人们也称其为“参数”而不是“运算元”。

如果一个运算符对应的只有一个运算元,那么它是 一元运算符。比如说一元负号运算(unary negation)-,它的作用是对数字进行正负转换

如果一个运算符拥有两个运算元,那么它是 二元运算符

加法 +,

减法 -,

乘法 *,

除法 /,

取余 %,

求幂 **.

取余 %

a % b 的结果是 a 整除 b 的 余数

alert( 5 % 2 ); // 1,5 除以 2 的余数

alert( 8 % 3 ); // 2,8 除以 3 的余数

求幂 **.

alert( 2 ** 2 ); // 2² = 4

alert( 4 ** (1/2) ); // 2(1/2 次方)

1 任意一个运算元是字符串,那么另一个运算元也将被转化为字符串(二元 +)。

alert( '1' + 2 ); // "12"

alert(2 + 2 + '1' ); // "41",不是 "221"

alert('1' + 2 + 2); // "122",不是 "14"

二元 + 是唯一一个以这种方式支持字符串的运算符。

其他算术运算符只对数字起作用,并且总是将其运算元转换为数字。

如:

alert( 6 - '2' ); // 4,将 '2' 转换为数字

alert( '6' / '2' ); // 3,将两个运算元都转换为数字

2 一元运算符(+)

 一元运算符加号,或者说,加号 + 应用于单个值,对数字没有任何作用。但是如果运算元不是数字,加号 + 则会将其转化为数字。

// 对数字无效 let x = 1; alert( +x ); // 1

let y = -2; alert( +y ); // -2

// 转化非数字 alert( +true ); // 1 alert( +"" ); // 0

我们经常会有将字符串转化为数字的需求。比如,如果我们正在从 HTML 表单中取值,通常得到的都是字符串。如果我们想对它们求和,该怎么办?

二元运算符加号会把它们合并成字符串:

let apples = "2";

let oranges = "3";

alert( apples + oranges ); // "23",二元运算符加号合并字符串

如果我们想把它们当做数字对待,我们需要转化它们,然后再求和

let apples = "2";

let oranges = "3"; // 在二元运算符加号起作用之前,所有的值都被转化为了数字

alert( +apples + +oranges ); // 5

// 更长的写法 //

alert( Number(apples) + Number(oranges) ); // 5

但要记住一元运算符优先级高于二元运算符

let n = 2; n *= 3 + 5; alert( n ); // 16 (右边部分先被计算,等同于 n *= 8)

3逗号运算符(非重点)

逗号运算符能让我们处理多个语句,使用 , 将它们分开。每个语句都运行了,但是只有最后的语句的结果会被返回。

举个例子:

let a = (1 + 2, 3 + 4);alert( a ); // 7(3 + 4 的结果)

这里,第一个语句 1 + 2 运行了,但是它的结果被丢弃了。随后计算 3 + 4,并且该计算结果被返回。

逗号运算符的优先级非常低

请注意逗号运算符的优先级非常低,比 = 还要低,因此上面你的例子中圆括号非常重要。

如果没有圆括号:a = 1 + 2, 3 + 4 会先执行 +,将数值相加得到 a = 3, 7,然后赋值运算符 =执行 a = 3,然后逗号之后的数值 7 不会再执行,它被忽略掉了。相当于 (a = 1 + 2), 3 + 4

null + 1 = 1 //

undefined + 1 = NaN //

" \t \n" - 2 = -2 // (7)

null 经过数字转换之后会变为 0

undefined 经过数字转换之后会变为 NaN

字符串转换为数字时,会忽略字符串的首尾处的空格字符。在这里,整个字符串由空格字符组成,包括 \t\n 以及它们之间的“常规”空格。因此,类似于空字符串,所以会变为 0

运算符(一元 二元)相关推荐

  1. 【C#】加加和减减、复合赋值运算符、一元二元运算符、关系运算符、bool类型

    一.加加和减减 ①++   自身加一   有前加,后加 ② - -   自身减一   有前减,后减 注意:一元运算符++/--比二元的+-优先级高  //后加(先取原值参与运算,后自身加一) //后加 ...

  2. JavaScript运算符——一元、二元、三元运算符

    JavaScript 一元运算符 一.js中的一元(一目)运算符 i++ 先赋值,再自加1 i++ 结果为 num1=4 num2=5 document.write()打印 反过来 1> str ...

  3. java 一元 二元 三元_一元、二元和三元关系

    你好呀 欢迎来到一百挑战 一起在学习中寻找自己的幸福 这是学习挑战七的第十三周,这周的主题是"一元.二元和三元关系". 这周的内容,是让我们从一元.二元和三元的角度去看待关系,老师 ...

  4. java 一元 二元 三元_一元到三元关系 二元

    二元关系时间是6到36个月 从五六个月开始 孩子陷入一种矛盾感觉 她一方面还是觉得妈妈和自己是一体的 但同时又发现 越来越多的事实显示他和妈妈是两个人 孩子意识到自己和妈妈分离的开始 这个分离包括两方 ...

  5. Java 一元、二元运算符、三目条件运算符(三元运算符)

    运算符可以是一元.二元或三元的. 一元运算符有1个操作数.例如,递增运算符"++"就是一元运算符. 二元运算符有2个操作数.例如,除法运算符"/"有2个操作数. ...

  6. java只有整形才能运算符为,java语言基础(二)

    表达式与语句 变量 变量按照类型分:基本类型和引用类型.按作用域分:局部变量.类成员变量.方法参数和异常处理参数. 局部变量 在一个方法或一对{}表示的代码块内定义的变量称为局部变量.局部变量的作用域 ...

  7. C++中的运算符重载

    1.Cpp中的重载运算符和重载函数 C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载.重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但 ...

  8. C++——重载运算符和重载函数

    重载运算符和重载函数 C++ 中的函数重载 C++ 中的运算符重载 C++ 一元运算符重载 C++ 二元运算符重载 C++ 关系运算符重载 C++ 输入/输出运算符重载 C++ 赋值运算符重载 C++ ...

  9. 【面试】JAVA六种运算符详解及优先级

    文章目录 一.算术运算符 二.赋值运算符 三.关系/比较运算符 四.逻辑运算符 五.位运算符 六.三元运算符 七.运算符的优先级 一.算术运算符 + - * / % ++ -- % 取模运算 - 取余 ...

最新文章

  1. C#精髓【月儿原创】第一讲 使用垃圾回收器
  2. 机器学习 | 图像检索开源项目合集
  3. Linux root用户忘记密码解决方法
  4. 在C语言的函数后标注small,大佬在吗,我用C写了一个去多重括号的函数,结果。。。...
  5. 全局处理ajax请求时session超时
  6. 1-1docker加速器
  7. Visual Studio 2012 简体中文 旗舰正式版 ISO 下载
  8. 源码编译OpenCV卡在ippicv
  9. 【Python】Python2.7.15 - Windows安装Python以及Python安装目录结构详解
  10. 腾讯云 Game-Tech 技术沙龙小游戏专场“空降”长沙
  11. Make sure you've included captcha.urls as explained in the INSTALLATION section on
  12. 作业九 二维数组和字符数组的应用
  13. Congratulations! A Success Case on GDPR
  14. 基于高光谱成像的苹果病害无损检测方法
  15. Equivalent String
  16. 《探索需求》——阅读笔记三
  17. vue 通过 Ctrl 、Shift 键 + 点击鼠标实现 div 多选操作
  18. 深入理解android(三):xposed详解,Xposed原理
  19. 张博涵清华大学_特别专访 | 张博涵 上
  20. win 11 大更新,新功能爱了爱了。

热门文章

  1. 读论文 Automatic generation and detection of highly reliable fiducial markersnunder occlusion
  2. Android DES,AES,RSA加密实现
  3. OPPOR9Android 6.0过程,超简单 OPPOR9升级Android 6.0系统 详细教程
  4. linux下硬件检测工具,Linux硬件检测工具
  5. Prometheus监控之PromQL表达式语法学习(1)
  6. 《OpenHarmony 3GPP协议开发深度剖析》之--搜网流程之PLMN选择
  7. 探究L298N模块烧毁的原因
  8. 洛谷3379-LCA-C++-(LCA+倍增)
  9. 计算机一直安装更新失败,win10系统一直安装更新失败的三种解决方法
  10. git hub寻找资源