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

2.4 表達式

表達式是指由運算符和操作數組合而成并且能夠進行運算獲得結果值的式子。所有的表達式都有返回值。

1.運算符的優先級

如果一個表達式中有多個不同的運算符,這些運算符進行運算的時候,就要考慮運算符的優先級問題,就是先運算誰和后運算誰的問題。最基本優先策略是““先乘除,后加減”,其次遵循算術運算符優先于關系運算符,關系運算符優先于邏輯運算符,邏輯運算符優先于賦值運算符的規律,具體優先級順序如表2-8所示。

表2-8 JavaScript運算符的優先級

2.表達式中類型轉換

表達式通常要求操作數的數據類型是相同的,例如進行加減乘除運算的表達式,操作數全是數值型的,進行邏輯運算的表達式其操作數的數據類型全是布爾型的等諸如此類的情況。但是,在JavaScript中卻沒有這么嚴格的要求,它是一種弱類型的程序設計語言,允許運算符對數據類型不匹配的操作數進行運算。主要原因是JavaScript會根據運算符的特性和操作數的類型進行隱式類型轉換。JavaScript進行轉換的形式主要有以下幾種。

(1)+運算符,有以下兩種情況。

? 如果兩個操作數中有一個為字符串,那么JavaScript認為是進行字符串連接運算,并把不是字符串類型的操作數轉換成字符串。

? 如果兩個操作數都不是字符串,那么JavaScript認為是進行加運算。

(2)其他運算符:如果操作數類型不符合當前運算符運算類型,那么JavaScript會把操作數改為相應的類型的值再進行運算。例如,*運算會要求操作數全部是數值型。

試一試,下面幾個表達式的值分別是多少?

(1)求表達式10+30、10+“30”“10”+30、“10”+“30”的值。

(2)求表達式10-30、10-“30”“10”-30、“10”-“30”的值。

(3)求表達式true+10、true+“10”、true+false、true-false的值。

(4)求表達式“a”-10的值。

主站蜘蛛池模板: 鄂托克前旗| 陇西县| 福建省| 建瓯市| 旺苍县| 镇雄县| 萝北县| 保德县| 阳泉市| 龙海市| 盐城市| 建平县| 长阳| 镇安县| 南和县| 遵化市| 勐海县| 汽车| 玉溪市| 新泰市| 卢湾区| 西盟| 望奎县| 英超| 资中县| 鹤岗市| 松潘县| 太湖县| 清新县| 当涂县| 宁陕县| 扬州市| 盈江县| 固阳县| 商水县| 容城县| 博兴县| 新源县| 和林格尔县| 名山县| 伊金霍洛旗|