一元操作符——递增和递减操作符(第一次写博客,紧张.)
一元操作符,即只能操作一個值的操作符,是JS中最簡單的操作符。
1.遞增和遞減操作符
分為2個版本:前置型和后置型。若使用前置遞增操作符給一個數值加1,要把(++)放在數值前面:
var a = 1;++a; ==> var a = 1;a = a+1;
遞減操作與遞增操作類似,即把(--)放在數值前面。?
后置型的話,與前置型語法一樣,只是把(++/--)放在數值后面,但是,它與前置性有一個很大的區別,在于后置型的操作,是在包含它的語句執行完了之后才執行;而前置型的操作是在語句被求值之前改變。這樣說肯定是很那么懂,看完下面的例子就懂了:
前置型:var a = 20;
var b = 20;?
var c = ++ a + b;
alert(a); ==》21
alert(b); ==》41
這個看起來沒什么問題,輸出a為(a+1),c為(a+1+b);
后置型:var a = 20;
var b = 20;
var c = a++ + b;
alert(a); ==>21;
alert(c); ==>40;
這里問題就出現了,為什么c是40而不是41呢?這里我們再來看一下上面這句話后置型的操作,是在包含它的語句執行完了之后才執行;我們輸出了c,對于后置型來說,因為在a++后面還有操作,所以就先執行a+b,將結果賦值給c,然后再執行a++,所以a的結果是加過后的結果,c的結果是沒有加之前的操作。
2.應用于不同的值
上面的四種操作符對所有的值都適用,也就是它們不僅適用于整數,還可以用于字符串、布爾值、浮點數值和對象 。但它們都遵從下面的規則:
1:?在應用于一個包含有效數字字符的字符串時,先將其轉換為數字值,再執行加減 1 的操作。 var s1 = "3";s1++; ==>4
2:?在應用于一個不包含有效數字字符的字符串時,將變量的值設置為 NaN 。var s2 = "aaa";s2++; ==>NaN
3:?在應用于布爾值?時,若果是true,就將轉換成1,在執行操作;如果是false,就將轉換成0。var b1 = true;b1++; ==>2
4:?在應用于浮點數值(小數)時,執行加減 1 的操作。var n1 = 3.1;n1++; ==>4.1
5:?在應用于對象時,先調用對象的 valueOf()方法,以取得一個可供操作的值,在根據上面的規則進行操作;
var o = {
valueOf: function() {
return -10;
}
};
o++; ?==>-9
3.一元加和減(+/-)操作賦
這兩個操作符對于數值的操作和數學上并沒有區別,只是在對于非數值的操作中不同。
在一元加操作符中,對非數值的操作,該操作符會像 Number()轉型函數一樣對這個值執行轉換 布爾值 false 和 true 將被轉換為 0 和 1,
字符串值會被按照一組特殊的規則進行解析,而對象是先調用它們的 valueOf()或?toString()方法,再轉換得到的值 。
var s1 = "01";
var s2 = "1.1";
var s3 = "z";
var b = false;
var f = 1.1;
var o = {
valueOf: function() {
return -1;
}
};
s1 = +s1; // 值變成數值 1
s2 = +s2; // 值變成數值 1.1
s3 = +s3; // 值變成 NaN
b = +b; // 值變成數值 0
f = +f; // 值未變,仍然是 1.1
o = +o; // 值變成數值-
一元減操作符主要是表示負數,而當應用于非數值時,一元減操作符遵循與一元加操作符相同的規則,最后再將得到的數值轉換為負數 。
var s1 = "01";
var s2 = "1.1";
var s3 = "z";
var b = false;
var f = 1.1;
var o = {
valueOf: function() {
return -1;
}
};
s1 = -s1; // 值變成了數值-1
s2 = -s2; // 值變成了數值-1.1
s3 = -s3; // 值變成了 NaN
b = -b; // 值變成了數值 0
f = -f; // 變成了-1.1
o = -o; // 值變成了數值 1
轉載于:https://www.cnblogs.com/rongy/p/6049073.html
總結
以上是生活随笔為你收集整理的一元操作符——递增和递减操作符(第一次写博客,紧张.)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 背单词
- 下一篇: SpringBoot项目部署与服务配置