前言:
學習一門編程語言的基本步驟
(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
/ (除)spa
//除 console.log(3/2);//1.5
% (取餘)隔行換色,判斷是否爲閏年code
//取餘 console.log(3%2);//1 console.log(2%3);//2
++(自增)在原來的基礎上加1blog
//自增 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
//> 大於 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('登陸失敗');//登陸成功