《JavaScript Dom編程藝術》讀書筆記(二)

算術操做符

加減乘除這些算術操做中的每一種都必須藉助於相應的操做符才能完成。操做符是JavaScript爲完成各類操做而定義的一些符號。等號(=)、加號(+)、減號(-)、乘號(*)、除號(/)。瀏覽器

下面是一個簡單的加法操做:app

1 + 4

還能夠把多種操做組合在一塊兒:code

1 + 4 * 5

爲避免產生歧義,能夠用括號把不一樣的操做分隔開來:對象

1 + (4 * 5)
(1 + 4) * 5

變量能夠包含操做:ip

var total = (1 + 4) * 5;

還能夠對變量進行操做:字符串

var temp_fahrenheit = 95;
var temp_celsius = (temp_fahrenheit - 32) / 1.8;

JavaScript還提供了一些很是有用的操做符做爲各類經常使用操做的縮寫。例如,若是想給一個數值變量加上1,可使用以下所示的語句:it

year = year + 1;

也可使用++操做符來達到一樣的目的:io

year++;

相似地,--操做符將對一個數值變量的值進行減1操做。變量

加號(+)是一個比較特殊的操做符,既能夠用於數值,也能夠用於字符串。把兩個字符串合二爲一是一種很直觀易懂的操做:語法

var message = "I am feeling" + "happy";

像這樣把多個字符串首尾相連在一塊兒的操做叫作拼接。這種拼接也能夠經過變量來完成:

var mood = "happy";
var message = "I am feeling" + mood;

甚至能夠把數值和字符串拼接在一塊兒。由於JavaScript是一種弱類型語言,因此這種操做是容許的。此時,數值將會被自動轉換爲字符串:

var year = 2005;
var message = "The year is" + year;

若是把字符串拼接在一塊兒,其結果將是一個更長的字符串;可是若是用一樣的操做符來「拼接」兩個數值,其結果將是那兩個數值的算術和。對比下面兩條alert語句的執行結果:

alert ("10" + 20);
alert (10 + 20);

第一條alert語句將返回字符串「1020」,第二條alert語句將返回數值30。第一條是對字符串「10」和數值20進行拼接的結果。第二條是對數值10和數值20進行假髮運算的結果。

另外一個很是有用的快捷操做符是+=,它能夠一次完成「加法和賦值」(或「拼接和賦值」)操做:

var year = 2010;
var message = "The year is";
message += year;

執行完上面這些語句後,變量message的值將是「The year is 2005」。能夠用以下所示的alert對話框來驗證這一結果:

alert(message);

條件語句

在解釋腳本時,瀏覽器將依次執行這個腳本中的各條語句,咱們能夠在這個腳本中用條件語句來設置一個條件,只有知足了這一條件才能讓更多的語句獲得執行。最多見的條件語句是if語句,下面是if語句的基本語法:

if(condition) {
    statements;
}

條件必須放在if後面的圓括號中。條件的求之結果永遠是一個布爾值,即只能是true或false。花括號中的語句——無論他們有多少條,只有在給定條件的求值結果是true的狀況下才會執行。所以,在下面這個例子中,alert消息永遠也不會出現:

if(1 > 2) {
    alert("The world has gone mad!")
}

由於1不可能大於2,因此上面這個條件的值永遠是false。

事實上,if語句中的花括號自己並非必不可少的。若是if語句中的花括號部分只包含着一條語句的話,那就能夠不使用花括號,並且這條if語句的所有內容能夠寫在同一行上:

if(1 > 2) alert("The world has gone mad!");

不過,花括號能夠提升腳本的可讀性,因此在if語句中老是使用花括號是個好習慣。

if語句能夠有一個else字句。包含在else字句中的語句會在給定條件爲假時執行:

if(1 > 2) {
    alert("The world has gone mad!")
} else {
    alert("All is well with the world")
}

由於給定條件「1 > 2」的值爲假(false),因此最後彈框顯示else裏面的內容。

比較操做符

JavaScript還提供了許多幾乎只能用在條件語句裏的操做符,其中包括諸如大於(>)、小於(<)、大於或等於(>=)、小於或等於(<=)之類的比較操做符。

若是想比較兩個值是否相等,可使用「等於」比較操做符。這個操做符由兩個等號構成(==)。單個等號(=)是用於完成賦值操做的。若是在條件語句的某個條件裏使用了單個等號,那麼只要相應的複製操做取得成功,那個條件的求值結果就將是true。

下面是一個錯誤地進行「等於」比較的例子:

var my_mood = "happy";
var your_mood = "sad";
if(my_mood = your_mood) {
    alert("We both feel the same.")
}

上面這條語句的錯誤之處在於,它是把變量your_mood賦值給變量my_mood,而不是在比較它們是否相等。由於這個賦值操做總會成功,因此這個條件語句的結果將永遠是true。

下面纔是進行「等於」比較的正確作法:

var my_mood = "happy";
var your_mood = "sad";
if(my_mood == your_mood) {
    alert("We both feel the same.")
}

此次,條件語句的結果是false。

JavaScript還提供了一個用來進行「不等於」比較的操做符,它由一個感嘆號和一個等號構成(!=)。

if(my_mood != your_mood) {
    alert("We're feeling different moods.")
}

相等操做符==並不表示嚴格相等,這一點很容易讓人迷糊。例如,比較false與一個空字符串會獲得上面結果?

var a = false;
var b = "";
if(a == b) {
    alert("a equals b");
}

這個條件語句的求值結果是true,由於相等操做符==認爲空字符與false的含義相同。要進行嚴格比較,就要使用另外一種等號(===)。這個全等操做符會執行嚴格的比較,不只比較值,並且會比較變量的類型:

var a = false;
var b = "";
if(a === b) {
    alert("a equals b");
}

這一次,條件表達式的求值結果就是false了。由於即便能夠認爲false與空字符串具備相同的含義,但Boolean布爾值和String字符串可不是一種類型。

對於不等操做符!=也是如此,比較嚴格不相等,就要使用!==。

邏輯操做符

JavaScript容許把條件語句裏的操做組合在一塊兒。例如,若是想檢查某個變量,假設這個變量的名字是num,它的值是否是在5 ~ 10之間,將須要進行兩次比較操做。首先,比較這個變量是否大於或等於5,而後,比較這個變量是否小於等於10.這兩次比較操做稱爲邏輯比較。下面是把這兩個邏輯比較組合在一塊兒的具體作法:

if ( num >= 5 && num <= 10 ) {
    alert("The number is in the right range.")
}

這裏使用了「邏輯與」操做符,由兩個「&」字符構成,是一個邏輯操做符。

邏輯操做符的操做對象是布爾值。每一個邏輯操做數返回一個布爾值true或者是false。「邏輯與」操做只有在它的兩個操做數都是true時纔會是true。

「邏輯或」操做符由兩個垂直線字符構成。只要它的操做數中有一個是true,「邏輯或」的操做就將是true。若是它的兩個操做數都是true,「邏輯或」操做也將是true。只有當它的兩個操做數都是false時,「邏輯或」操做纔會是false。

if ( num > 10 || num < 5 ) {
    alert("The number is not in the right range")
}

JavaScript還提供了一個「邏輯非」操做符,它由一個感嘆號( ! )單獨構成。「邏輯非」操做符只能做用於單個邏輯操做數,其結果是把那個邏輯操做數所返回的布爾值取反。若是那個邏輯操做數所返回的布爾值是true,「邏輯非」操做符將把它取反爲false:

if ( !(1 > 2) ) {
    alert("All is well with the world");
}

爲了不產生歧義,上面這條語句把邏輯操做數放在了括號裏,使「邏輯非」操做符做用於括號裏的全部內容。

能夠用「邏輯非」操做符把整個條件語句的結果顛倒過來。在下面的例子裏,特地使用了一對括號來確保「邏輯非」操做符將做用於兩個邏輯操做數的組合結果:

if ( !(num > 10 || num < 5) ) {
    alert("The number is in the right range.")
}
相關文章
相關標籤/搜索