一元运算符与二元运算符

PS:“+”和“-”既是一元运算符,也是二元运算符。

首先咱们看看下面这几道题的结果是什么:


当 x='1'时, x+1;x-1;+x;-x;++x; typeof(x+1); typeof(x-1); typeof(+x); typeof(-x); typeof(++x); 的结果分别是多少? 答案: x+1 //'11' x-1 //0 +x //1 -x //-1 ++x //2 typeof(x+1) //'string' typeof(x-1) //'number' typeof(+x) //'number' typeof(-x) //'number' typeof(++x) //'number'

一元加法(+)html

一元加法运算符把操做数转换为数字(或者NaN),并返回这个转换后的数字。若是操做数自己就是数字,则直接返回这个数字。java

+1    // => 1: 操做数自己就是数字,则直接返回这个数字
+'1'  // => 1: 把字符串转换为数字
+'-1' // => -1: 把字符串转换为数字

一元减法(-)学习

当“-”用作一元运算符时,它会根据须要把操做数转换为数字,而后改变运算结果的符号。spa

-1   // => -1: 操做数自己就是数字,直接改变运算结果的符号
-'1' // => -1: 把字符串转换为数字,再改变运算结果的符号
-'-1'// => 1: 把字符串转换为数字,再改变运算结果的符号

二元加法(+)code

二元加法运算符“+”能够对两个数字作加法,也能够作字符串链接操做。htm

当两个操做数都是数字或都是字符串的时候,计算结果是显而易见的。然而对于其余状况来讲,则要进行一些必要的类型转换,而且运算符的行为依赖于类型转换的结果。加号的转换规则优先考虑字符串链接,若是其中一个操做数是字符串或者转换为字符串的对象,另一个操做数将会转换为字符串,加法将进行字符串的链接操做。若是两个操做数都不是类字符串(string-like)的, 两个操做数都将转换为数字(或者NaN),而后进行算术加法运算。对象

这里有一些栗子:blog

1 + 1        // => 2: 加法
'1' + '1'    // => '11': 字符串链接
'1' + 1      // => '11': 数字转换为字符串后进行字符串链接
1 + {}       // => '1[object Object]': 对象转换为字符串后进行字符串链接
true + true  // => 2: 布尔值转换为数字后作加法
1 + null     // => 1: null转换为0后作加法
1 + undefined// => NaN: undefined转换为NaN后作加法

须要特别注意的是,当加号运算符和字符串和数字一块儿使用时,须要考虑加法的结合性的对运算顺序的影响。也就是说,运算结果是依赖于运算符的运算顺序的,好比:ip

1 + 1 + '1';  // => '21'
1 +(1 + '1'); // => '111'

第一行没有圆括号,“+”运算符具备从左至右的结合性,所以两个数字首先进行加法计算,计算结果和字符串进行链接。在第二行中,圆括号改变了运算顺序:数字1和字符串链接,生成一个新字符串,而后数字1和这个新字符串再次链接,生成了最终结果。字符串

二元减法(-)

当“-”用作二元运算符时,它会根据须要把操做数转换为数字,而后再进行减法运算。

1-0    // => 1: 减法
'1'-0  // => 1: 字符串转为数字后进行减法运算
'1'-'0'// => 1: 字符串转为数字后进行减法运算

递增(++)

须要注意的是,“++”运算符从不进行字符串链接操做,它老是会将操做数转换为数字并增1。表达式++x并不总和x=x+1彻底同样。

var x='1';
var y=x+1; // =>'11': 字符串链接
var z=++x; //=> 2:字符串转为数字后增1

总结:

JavaScript中的某些运算符会作隐式的类型转换。一元运算符“+”,“-”,“++”,二元运算符“-”都会把操做数隐式的转换为数字,二元运算符“+”比较特殊,当有操做数是字符串,它将会把另一个操做数转换为字符串。

x + '' // 等价于String(x)
+x     // 等价于Number(x)

 

下面是个人公众号,欢迎你们关注,你们一块儿学习一块儿进步

 

 

参考文章连接:https://www.javazhiyin.com/11742.html

相关文章
相关标签/搜索