2017-09-18 119 views
0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch#Conditional_catch_clauses爲什麼Mozilla創建條件catch子句?

所以這個問題只是爲了好奇...爲什麼(以及在什麼條件下)Mozilla創建了這個非標準的結構?這個功能應該解決什麼問題?

爲什麼不創建類似的東西,並檢查引擎蓋下的原型?

try {} 
catch(TypeError e) {} 
catch(RangeError e) {} 
catch(e) {} 
+1

與其依靠異地內容和讓人離開現場去幫助你,不如在**你的問題中總結鏈接**的內容。 –

+1

*「在什麼條件下」*是什麼意思? –

回答

0

他們創造它是因爲他們覺得它需要在語言中。他們可以這樣做,因爲他們控制SpiderMonkey(從技術上說,它是SpiderMonkey實現的僅限Mozilla的語言),與ECMAScript(我們都稱之爲「JavaScript」的標準化語言)截然不同。他們將它定義爲if,它具有任意條件,而不是更像Java的東西,因爲如果您可以測試任何東西,而不僅僅是instanceof或類似的東西,它會更靈活。

目前沒有任何將此項添加到的建議JavaScript ECMAScript,也不存在seem to be much appetite for doing so孤立。 (有一些興趣廣義pattern matching,目前是Stage 0提議,這可能演變成的東西,也得到了應用catch

但使用內邏輯catch塊,重新投擲成爲自一些更有吸引力已達成共識,使調用堆棧生成發生在例外創建時間,而不是在throw(遺憾的是IE11得到它錯誤,但這將不會成爲一個問題有一天)。