- JavaScript從入門到精通(微視頻精編版)
- 明日科技
- 3575字
- 2020-09-01 15:02:21
2.3 運算符

視頻講解
運算符也稱為操作符,它是完成一系列操作的符號。運算符用于將一個或幾個值進行計算而生成一個新的值,對其進行計算的值稱為操作數,操作數可以是常量或變量。
JavaScript的運算符按操作數的個數可以分為單目運算符、雙目運算符和三目運算符;按運算符的功能可以分為算術運算符、比較運算符、賦值運算符、字符串運算符、邏輯運算符、條件運算符和其他運算符。
2.3.1 算術運算符
算術運算符用于在程序中進行加、減、乘、除等運算。在JavaScript中常用的算術運算符如表2.3所示。
表2.3 JavaScript中的算術運算符

【例2.05】美國使用華氏度來作為計量溫度的單位。將華氏度轉換為攝氏度的公式為“攝氏度=5 / 9×(華氏度-32)”。假設洛杉磯市的當前氣溫為68華氏度,分別輸出該城市以華氏度和攝氏度表示的氣溫。關鍵代碼如下:(實例位置:資源包\源碼\02\2.05)
01 <script type="text/javascript"> 02 var degreeF=68; //定義表示華氏度的變量 03 var degreeC=0; //初始化表示攝氏度的變量 04 degreeC=5/9*(degreeF-32); //將華氏度轉換為攝氏度 05 document.write("華氏度:"+degreeF+"°F"); //輸出華氏度表示的氣溫 06 document.write("<br>攝氏度:"+degreeC+"°C"); //輸出攝氏度表示的氣溫 07 </script>
本實例運行結果如圖2.7所示。

圖2.7 輸出以華氏度和攝氏度表示的氣溫
注意
在使用“/”運算符進行除法運算時,如果被除數不是0,除數是0,得到的結果為Infinity;如果被除數和除數都是0,得到的結果為NaN。
說明
“+”除了可以作為算術運算符之外,還可用于字符串連接的字符串運算符。
2.3.2 字符串運算符
字符串運算符是用于兩個字符串型數據之間的運算符,它的作用是將兩個字符串連接起來。在JavaScript中,可以使用“+”和“+=”運算符對兩個字符串進行連接運算。其中,“+”運算符用于連接兩個字符串,而“+=”運算符則連接兩個字符串并將結果賦給第一個字符串。表2.4給出了JavaScript中的字符串運算符。
表2.4 JavaScript中的字符串運算符

【例2.06】將電影《美人魚》的影片名稱、導演、類型、主演和票房分別定義在變量中,應用字符串運算符對多個變量和字符串進行連接并輸出。代碼如下:(實例位置:資源包\源碼\02\2.06)
01 <script type="text/javascript"> 02 var movieName, director,type,actor,boxOffice; //聲明變量 03 movieName = "美人魚"; //定義影片名稱 04 director = "周星馳"; //定義影片導演 05 type = "喜劇、愛情、科幻"; //定義影片類型 06 actor = "鄧超、林允"; //定義影片主演 07 boxOffice = 33.9; //定義影片票房 08 alert("影片名稱:"+movieName+"\n 導演:"+director+"\n類型:"+type+"\n 主演:"+actor+"\n 票房: "+boxOffice+"億元"); //連接字符串并輸出 09 </script>
運行代碼,結果如圖2.8所示。

圖2.8 對多個字符串進行連接
說明
JavaScript腳本會根據操作數的數據類型來確定表達式中的“+”是算術運算符還是字符串運算符。在兩個操作數中只要有一個是字符串類型,那么這個“+”就是字符串運算符,而不是算術運算符。
2.3.3 比較運算符
比較運算符的基本操作過程是,首先對操作數進行比較(這個操作數可以是數字也可以是字符串),然后返回一個布爾值true或false。在JavaScript中常用的比較運算符如表2.5所示。
表2.5 JavaScript中的比較運算符

【例2.07】應用比較運算符實現兩個數值之間的大小比較。代碼如下:(實例位置:資源包\源碼\02\2.07)
01 <script type="text/javascript"> 02 var age = 25; //定義變量 03 document.write("age變量的值為:"+age); //輸出字符串和變量的值 04 document.write("<p>"); //輸出換行標記 05 document.write("age>20:"); //輸出字符串 06 document.write(age>20); //輸出比較結果 07 document.write("<br>"); //輸出換行標記 08 document.write("age<20:"); //輸出字符串 09 document.write(age<20); //輸出比較結果 10 document.write("<br>"); //輸出換行標記 11 document.write("age==20:"); //輸出字符串 12 document.write(age==20); //輸出比較結果 13 </script>
運行本實例,結果如圖2.9所示。

圖2.9 輸出比較結果
比較運算符也可用于兩個字符串之間的比較,返回結果同樣是一個布爾值true或false。當比較兩個字符串A和B時,JavaScript會首先比較A和B中的第一個字符,例如第一個字符的ASCII碼值分別是a和b,如果a大于b,則字符串A大于字符串B,否則字符串A小于字符串B。如果第一個字符的ASCII碼值相等,就比較A和B中的下一個字符,依此類推。如果每個字符的ASCII碼值都相等,那么字符數多的字符串大于字符數少的字符串。
例如,在下面字符串的比較中,結果都是true。
01 document.write("abc"=="abc"); //輸出比較結果 02 document.write("ac"<"bc"); //輸出比較結果 03 document.write("abcd">"abc"); //輸出比較結果
2.3.4 賦值運算符
JavaScript中的賦值運算可以分為簡單賦值運算和復合賦值運算。簡單賦值運算是將賦值運算符(=)右邊表達式的值保存到左邊的變量中;而復合賦值運算混合了其他操作(例如算術運算操作)和賦值操作。例如:
sum+=i; //等同于“sum=sum+i;”
JavaScript中的賦值運算符如表2.6所示。
表2.6 JavaScript中的賦值運算符

【例2.08】應用賦值運算符實現兩個數值之間的運算并輸出結果。代碼如下:(實例位置:資源包\源碼\02\2.08)
01 <script type="text/javascript"> 02 var a = 2; //定義變量 03 var b = 3; //定義變量 04 document.write("a=2,b=3"); //輸出a和b的值 05 document.write("<p>"); //輸出段落標記 06 document.write("a+=b運算后:"); //輸出字符串 07 a+=b; //執行運算 08 document.write("a="+a); //輸出此時變量a的值 09 document.write("<br>"); //輸出換行標記 10 document.write("a-=b運算后:"); //輸出字符串 11 a-=b; //執行運算 12 document.write("a="+a); //輸出此時變量a的值 13 document.write("<br>"); //輸出換行標記 14 document.write("a*=b運算后:"); //輸出字符串 15 a*=b; //執行運算 16 document.write("a="+a); //輸出此時變量a的值 17 document.write("<br>"); //輸出換行標記 18 document.write("a/=b運算后:"); //輸出字符串 19 a/=b; //執行運算 20 document.write("a="+a); //輸出此時變量a的值 21 document.write("<br>"); //輸出換行標記 22 document.write("a%=b運算后:"); //輸出字符串 23 a%=b; //執行運算 24 document.write("a="+a); //輸出此時變量a的值 25 </script>
運行本實例,結果如圖2.10所示。

圖2.10 輸出賦值運算結果
2.3.5 邏輯運算符
邏輯運算符用于對一個或多個布爾值進行邏輯運算。在JavaScript中有3個邏輯運算符,如表2.7所示。
表2.7 邏輯運算符

【例2.09】應用邏輯運算符對邏輯表達式進行運算并輸出結果。代碼如下:(實例位置:資源包\源碼\02\2.09)
01 <script type="text/javascript"> 02 var num = 20; //定義變量 03 document.write("num="+num); //輸出變量的值 04 document.write("<p>num>0 && num<10的結果:"); //輸出字符串 05 document.write(num>0 && num<10); //輸出運算結果 06 document.write("<br>num>0 || num<10的結果:"); //輸出字符串 07 document.write(num>0 || num<10); //輸出運算結果 08 document.write("<br>!num<10的結果:"); //輸出字符串 09 document.write(!num<10); //輸出運算結果 10 </script>
本實例運行結果如圖2.11所示。

圖2.11 輸出邏輯運算結果
2.3.6 條件運算符
條件運算符是JavaScript支持的一種特殊的三目運算符。
語法如下:
表達式?結果1:結果2
如果“表達式”的值為true,則整個表達式的結果為“結果1”,否則為“結果2”。
例如,定義兩個變量,值都為10,然后判斷兩個變量是否相等,如果相等則輸出“相等”,否則輸出“不相等”,代碼如下:
01 var a=10; //定義變量 02 var b=10; //定義變量 03 alert(a==b?"相等":"不相等"); //應用條件運算符進行判斷并輸出結果
運行結果如圖2.12所示。

圖2.12 判斷兩個變量是否相等
【例2.10】如果某年的年份值是4的倍數并且不是100的倍數,或者該年份值是400的倍數,那么這一年就是閏年。應用條件運算符判斷2017年是否是閏年。代碼如下:(實例位置:資源包\源碼\02\2.10)
01 <script type="text/javascript"> 02 var year = 2017; //定義年份變量 03 //應用條件運算符進行判斷 04 result = (year%4 == 0 && year%100 != 0) || (year%400 == 0)?"是閏年":"不是閏年"; 05 alert(year+"年"+result); //輸出判斷結果 06 </script>
本實例運行結果如圖2.13所示。

圖2.13 判斷2017年是否是閏年
2.3.7 其他運算符
1.逗號運算符
逗號運算符用于將多個表達式排在一起,整個表達式的值為最后一個表達式的值。例如:
01 var a,b,c,d; //聲明變量 02 a=(b=3,c=5,d=6); //使用逗號運算符為變量a賦值 03 alert("a的值為"+a); //輸出變量a的值
執行上面的代碼,運行結果如圖2.14所示。

圖2.14 輸出變量a的值
2.typeof運算符
typeof運算符用于判斷操作數的數據類型。它可以返回一個字符串,該字符串說明了操作數是什么數據類型。這對于判斷一個變量是否已被定義特別有用。
語法如下:
typeof 操作數
不同類型的操作數使用typeof運算符的返回值如表2.8所示。
表2.8 不同類型數據使用typeof運算符的返回值

例如,應用typeof運算符分別判斷4個變量的數據類型,代碼如下:
01 var a,b,c,d; //聲明變量 02 a=3; //為變量賦值 03 b="name"; //為變量賦值 04 c=true; //為變量賦值 05 d=null; //為變量賦值 06 alert("a的類型為"+(typeof a)+"\nb的類型為"+(typeof b)+"\nc的類型為"+(typeof c)+"\nd的類型為"+(typeof d)); //輸出變量的類型
執行上面的代碼,運行結果如圖2.15所示。

圖2.15 輸出不同的數據類型
3.new運算符
在JavaScript中有很多內置對象,如字符串對象、日期對象和數值對象等,通過new運算符可以用來創建一個新的內置對象實例。
語法如下:
對象實例名稱 = new 對象類型(參數) 對象實例名稱 = new 對象類型
當創建對象實例時,如果沒有用到參數,則可以省略圓括號,這種省略方式只限于new運算符。例如,應用new運算符來創建新的對象實例,代碼如下:
01 Object1 = new Object; //創建自定義對象 02 Array2 = new Array(); //創建數組對象 03 Date3 = new Date("August 8 2008"); //創建日期對象
2.3.8 運算符優先級
JavaScript運算符都有明確的優先級與結合性。優先級較高的運算符將先于優先級較低的運算符進行運算。結合性則是指具有同等優先級的運算符將按照怎樣的順序進行運算。JavaScript運算符的優先級順序及其結合性如表2.9所示。
表2.9 JavaScript運算符的優先級與結合性

例如,下面的代碼顯示了運算符優先順序的作用。
01 var a; //聲明變量 02 a = 20-(5+6)<10&&2>1; //為變量賦值 03 alert(a); //輸出變量的值
運行結果如圖2.16所示。

圖2.16 輸出結果
當在表達式中連續出現的幾個運算符優先級相同時,其運算的優先順序由其結合性決定。結合性有向左結合和向右結合,例如,由于運算符“+”是左結合的,所以在計算表達式“a+b+c”的值時,會先計算“a+b”,即“(a+b)+c”;而賦值運算符“=”是右結合的,所以在計算表達式“a=b=1”的值時,會先計算“b=1”。下面的代碼說明了“=”的右結合性。
01 var a = 1; //聲明變量并賦值 02 b=a=10; //對變量b賦值 03 alert("b="+b); //輸出變量b的值
運行結果如圖2.17所示。

圖2.17 輸出結果
【例2.11】假設手機原來的話費余額是10元,通話資費為0.2元/分鐘,流量資費為0.5元/兆,在使用了10兆流量后,計算手機話費余額還可以進行多長時間的通話。代碼如下:(實例位置:資源包\源碼\02\2.11)
01 <script type="text/javascript"> 02 var balance = 10; //定義手機話費余額變量 03 var call = 0.2; //定義通話資費變量 04 var traffic = 0.5; //定義流量資費變量 05 var minutes = (balance-traffic*10)/call; //計算余額可通話分鐘數 06 document.write("手機話費余額還可以通話"+minutes+"分鐘"); //輸出字符串 07 </script>
運行結果如圖2.18所示。

圖2.18 輸出手機話費余額可以進行通話的分鐘數
- 微服務設計(第2版)
- Boost.Asio C++ Network Programming(Second Edition)
- Learn ECMAScript(Second Edition)
- Java EE 6 企業級應用開發教程
- Clojure for Domain:specific Languages
- NativeScript for Angular Mobile Development
- C語言程序設計
- Python編程實戰
- 零基礎輕松學SQL Server 2016
- 軟件品質之完美管理:實戰經典
- PHP編程基礎與實例教程
- Swift 4從零到精通iOS開發
- Java 9 with JShell
- Solr權威指南(下卷)
- Python應用與實戰