JavaScript 中運算優先級問題

優先級引起的問題

這篇文章對 JavaScript 中的運算符進行小結,不少人對運算符優先級這一知識點都是一帶而過。這就致使在寫一些比較奇葩的 js 代碼,你並不知道它的輸出是啥,下面舉一個例子。javascript

var a = "hello";
console.log("This is "  + (a== "hello") ? 'Mine' : 'Yours');

js 代碼以下,請問在控制檯中輸出的結果爲?java

粗看題目,想固然的選擇輸出結果爲:This is Mine 的選項。選完以後,又有一點懷疑本身的答案。答案怎麼會如此直白呢,確定有貓膩。而後開始細細的思考,發覺套路原來這麼深。經分析以後,這題考的是運算符的優先級。根據優先級的不用,下面分步解答上面的題目:
第一步:括號改變優先級,所以先算括號裏面的值,獲得結果:「This is 」 + true ? 'Mine' : ‘Yours’
第二步:+ 的優先級要高於 ?:,所以先算 + 號,獲得結果:「This is true" ? 'Mine' : ‘Yours’
第三部:計算? : 因爲前面的字符串不爲空,轉爲 bool 值爲true,所以,整個表達式的結果爲 Mine;code

通過上面分析以後,這題的答案爲 Mine。 但願本身之後在遇到這種奇葩寫法的語句時,細心分析,儘可能避免入坑。下面總結一下 js 中的運算的優先級。blog

優先級總結

下表按從最高到最低的優先級列出JavaScript運算符。具備相同優先級的運算符按從左至右的順序求值。
ip

相關文章
相關標籤/搜索