官术网_书友最值得收藏!

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+"&deg;F");      //輸出華氏度表示的氣溫
    06  document.write("<br>攝氏度:"+degreeC+"&deg;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 輸出手機話費余額可以進行通話的分鐘數

主站蜘蛛池模板: 福清市| 金山区| 邵东县| 望江县| 钟山县| 荔波县| 临漳县| 永和县| 阳泉市| 神木县| 洛扎县| 正阳县| 曲阜市| 外汇| 白水县| 襄樊市| 天台县| 方山县| 沂南县| 双柏县| 竹溪县| 商都县| 长武县| 高唐县| 明星| 新巴尔虎左旗| 德钦县| 两当县| 江西省| 平谷区| 上犹县| 阿坝县| 隆林| 泾源县| 宝鸡市| 敦化市| 泊头市| 靖宇县| 卓资县| 库车县| 扎囊县|