前言:
學習一門編程語言的基本步驟
(01)了解背景知識
(02)搭建開發環境
(03)語法規范
(04)常量和變數
(05)資料型別
(06)資料型別轉換
(07)運算子
7.運算子
運算式:由運算子連接的操作資料,所組成的形式,
運算子分為算數運算子,比較運算子,邏輯運算子,位運算子,賦值運算子,三目運算子
(1)算術運算子——math
+ (加)
//加 console.log(3+2);//5
- (減)
//減 console.log(3-2);//1
* (乘)
//乘 console.log(3*2);//6
/ (除)
//除 console.log(3/2);//1.5
% (取余)隔行換色,判斷是否為閏年
//取余 console.log(3%2);//1 console.log(2%3);//2
++(自增)在原來的基礎上加1
//自增 var a=1; //此時a值是1 a++; //在原來的基礎上加1,此時a值是2 console.log(a); //獲取加1之后的a,此時a值是2 console.log(a++);//在a=2的基礎上加1,此時a值為3,存在記憶體之中, console.log(a); // 重新獲取a值,a值為3
--(自減)在原來的基礎上減1
//自減 var b=3; //此時b值是3 b--; //在原來的基礎上減1,此時b值是2 console.log(b); //獲取減1之后的b,此時b值為2 console.log(b--); //在b=2的基礎上減1,此時b值為1,存在記憶體當中 console.log(b); //重新獲取b值,b值為1
console.log(a++);先列印a的值,在執行自增
// 先列印a的值,在執行自增 //1.宣告一個變數 var a=1; //此時a還是1,列印就是1,列印完后,在執行自增,這時候a變成2,存在記憶體當中 console.log(a++);//輸出為1 //重新從記憶體中獲取a的值 console.log(a);//輸出為2
console.log(++a);先執行自增,在列印a的值
//先執行自增,在列印a的值 //2.宣告變數a var a=1; //先讓a的值執行自增,此時a的值變成了2,然后在列印a的值就是2 console.log(++a);//輸出為2 //重新獲取值也是2 console.log(a);//輸出為2 //綜合 var num=3; //第一個num的值列印為3,但是記憶體為2,影響記憶體中的儲存的值,然后后面的num取記憶體中的值,所以是1,3+1=4, console.log(num--+--num);//4
(2)比較運算子——compare
回傳都是一個布爾型的值,如果資料型別不同,會發生資料型別的轉換
> (大于)
//> 大于 console.log(3>4);//false
< (小于)
//< 小于 console.log(3<4);//true
>= (大于等于)
//> 大于等于 console.log(3>=4);//false
<= (小于等于)
//< 小于等于 console.log(3<=4);//true
== (等于) 比較兩個值是否相等
//== 等于 只比較值,不比較型別 console.log(7=='7');//ture
!= (不等于)
//!=不等于 console.log(3!=4);//true console.log(3!=3);//false console.log(3!='3');//false 僅比較值
=== (全等于) 不僅比較值,還會比較型別是否相等
//=== 全等于 比較值和型別 console.log(7==='7');//false
!== (全不等于)
//!==不等于 console.log(3!==4);//true console.log(3!==3);//false console.log(3!=='3');//true 比較值和型別
資料型別的轉換
//數字型別轉換 字串轉成了數字 console.log(13>'10');//ture //兩個字串比較,比較的是首個字符的Unicode碼,3——> 51 1——> 49 a——> 97 console.log('3'>'10');//true console.log('張鐵牛'>'張大柱');//true console.log('張'.charCodeAt()>'張'.charCodeAt());//false console.log('鐵'.charCodeAt());//38081 console.log('牛'.charCodeAt());//29275 console.log('大'.charCodeAt());//22823 console.log('柱'.charCodeAt());//26609
NaN和任何值比較(> < >= <= == === != !==),包括自身,都回傳false,
//NaN和任何值比較 //3>NaN console.log(3>'10a');//false //3<NaN console.log(3<'10a');//false //3>=NaN console.log(3>='10a');//false //3<=NaN console.log(3<='10a');//false //3==NaN console.log(3=='10a');//false //3===NaN console.log(3==='10a');//false //NaN==NaN console.log(NaN==NaN);//false //NaN===NaN console.log(NaN===NaN);//false //3!=NaN console.log(3!='10a');//true //3!==NaN console.log(3!=='10a');//true
(3)邏輯運算子——logic
and && 并且 關聯的兩個條件都滿足,結果是ture否則是false
//并且 && //判斷一個人的工資是否在5000-8000支間 var salary=7000; console.log(salary>=5000 && salary<=8000);//true //宣告兩個變數,分別保存用戶名和密碼,如果用戶名為root,并且密碼為123456,列印true,否者false, var uname="root"; var password="123456"; console.log(uname==="root" && password==="123457");//false
or || 或者 關聯的兩個條件滿足其一,結果是ture,否者是false
//或者 || //判斷是否滿足讓座標準,兒童12歲以下或者老人65歲以上 var age=50; console.log(age<=12 || age>=65);//false //宣告變數保存用戶,如果使用用戶名root或者使用手機號碼18112345678,滿足其一,列印true,否者false var uname="root"; var uname="18112345678"; console.log(uname==="root" || uname==="18112345678");//true
! 非 取反向 !ture=false !false=true
//取反向 ! var r=true; console.log(!r);//false
(4)邏輯短路,關注點不在結果是真偽,關注點在后面的程式是否會執行!!!
and=&& 并且 當第一個條件為false的時候,就不需要在執行第二條件
//邏輯短路 //and=&& 并且 當第一個條件為false的時候,就不需要在執行第二條件 var num=3; num>5 && console.log(num);//false,不執行后續 num<5 && console.log(num);//3
or = || 或者 當第一個條件為true的時候,就不需要執行第二條件
注意事項:邏輯短路無需關注運算子的整個邏輯計算的結果是ture還是false,重點看是否會執行第二條件,
//or= || 或者 當第一個條件為true的時候,就不需要執行第二條件 var num=3; num>1 || console.log(num);//true,后續不執行 num<1 || console.log(num);//前面為false,繼續執行,結果3 //綜合:變數保存年齡,如果滿18周歲,列印"成年人" var age=19; console.log(age>=18 && "成年人");//成年人
(5)位運算子(了解即可)
在執行運算的時候,計算機會把資料轉成二進制,來進行運算
按位于 (&),上下兩位都是1,結果是1,否則是0.
//按位于(&),上下兩位都是1,結果是1,否則是0. /* 011 101 ———— 001 */ console.log(3&5);//1
按位或 (|),上下兩位含有1,結果是1,否者是0,
//按位或 (|),上下兩位含有1,結果是1,否者是0, /* 101 111 ———— 111 */ console.log(5|7);//7
按位異或(^) ,上下兩位不同為1,相同為0.
// 按位異或(^) ,上下兩位不同為1,相同為0. /* 101 111 ———— 010 */ console.log(5^7);//2
按位右移(>>),洗掉二進制的最后一位,成倍減少
//按位右移(>>),洗掉二進制的最后一位,每增加一次右移,結果成倍減少一次 console.log(8>>1);//4 console.log(8>>2);//2 console.log(8>>3);//1
按位左移(<<),在最后一位增加一位0,成倍增長
// 按位左移(<<),在最后一位增加一位0,每增加一次左移,結果成倍增長一次 console.log(5<<1);//10 console.log(5<<2);//20 console.log(5<<3);//40
(6)賦值運算子
= 等于
//等于 var a=1;//給a賦值為1
+= 加等于
//加等于 //運算子的優先級,+號優先于=號 var a=1; //第一種寫法,在原來基礎上+1,把結果賦給a a=a+1; console.log(a); //第二種寫法,在原來基礎上+1,把結果賦給a a+=1; console.log(a); //在賦值運算子中,加等于可以用于字串拼接 var str='a'; str+='b'; console.log(str);//'ab'
-= 減等于
//減等于 var a=5; //普通寫法 a=a-1; console.log(a);//4
*= 乘等于
//乘等于 //打八折,在原來的基礎上打八折 var price=1500; //賦值運算子寫法 price*=0.8; console.log(price);//1200
/= 除等于
//除等于 //總分數552,求6科平均成績 var score=552; score/=6; console.log(score);//92
%= 取余等于
//取余等于 //注意:運算子的優先級:先執行并且,再執行或者; //宣告變數保存一個年份,判斷這個年份是否為閏年,結合邏輯短路,如果是閏年就列印閏年 var year=1999; (year%4===0 && year%100!==0 || year%400===0) && console.log("閏年");//false
(7)三目運算子
一目:一個運算子連接一個資料
a++ b-- !c
二目:一個運算子連接兩個資料
a+1 a-1 a*1 a/1 a>1 a<1 a=1 a!1等等
三目:兩個運算子連接三個資料
條件運算式?運算式1:運算式2
如果條件運算式為ture執行運算式1,
如果條件運算式為false執行運算式2
//三目運算子 //根據年齡判斷是否為成年人 var age=19; age>=18?console.log('成年人 '):console.log('未成年人');//成年人 //宣告兩個變數來保存用戶名和密碼,如果用戶名為root,并且密碼為123456,列印成功,否則列印失敗 var uname='rot'; var pwd='123456'; (uname==='root' && pwd==='123456') ? console.log('登錄成功'):console.log('登錄失敗');//登錄失敗 var uname1='root'; var pwd1='123456'; (uname1==='root' && pwd1==='123456') ? console.log('登錄成功'):console.log('登錄失敗');//登錄成功
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/149370.html
標籤:JavaScript
上一篇:JS高階編程技巧--柯理化函式
