3 回答

TA貢獻1829條經驗 獲得超7個贊
不是jQuery。不是YUI。不是(等)
框架可能很有用,但是它們經常隱藏一些關于JavaScript和DOM實際工作方式的丑陋細節。如果您的目標是能夠說“我知道JavaScript”,那么在框架上投入大量時間是相反的。
以下是一些JavaScript語言功能,您應該了解這些功能在做什么并且不會被吸引住,但是對于許多人來說,它們并不是立即顯而易見的:
那
object.prop
和object['prop']
是同一件事(所以請您停止使用eval
,謝謝);對象屬性始終是字符串(即使是數組);什么for
......in
是(和什么不是)。嗅探財產;什么
undefined
是(以及為什么聞到);為什么看似鮮為人知的in
操作員是有益的并且不同于typeof
/undefined
檢查;hasOwnProperty
; 目的delete
。該
Number
數據類型是一個真正的浮動; 使用浮點數與語言無關的困難;避免parseInt
八進制陷阱。嵌套函數作用域;在
var
您要避免意外的全局范圍內使用的必要性;范圍如何用于閉包;在閉合回路問題。全局變量和
window
屬性如何碰撞;全局變量和文檔元素如何在IE中不應該沖突,而應該如何沖突?也必須var
在全球范圍內使用以避免這種情況。function
語句如何在定義之前的代碼之前“ 提升 ”定義;函數語句和函數表達式之間的區別;為什么不應該使用命名函數表達式。構造函數的功能,
prototype
屬性和new
運算符的工作方式;利用此方法創建您實際想要的普通類/子類/實例系統的方法;當您可能想使用基于閉包的對象而不是原型時。(對此,大多數JS教程材料絕對是可怕的;花了我很多年才把它弄清楚。)this
通話時如何確定,不受限制;因此,方法傳遞不像您期望的其他語言那樣有效;如何關閉或Function#bind
可以用來解決這個問題。其他ECMAScript第五版功能
indexOf
,forEach
以及上的功能編程方法Array
。如何修復舊版瀏覽器以確保您可以使用它們;將它們與內聯匿名函數表達式一起使用,以獲取緊湊,易讀的代碼。瀏覽器和用戶代碼之間的控制流;同步和異步執行;在控件流內部觸發的事件(例如焦點)與控件返回時發生的事件和超時;如何調用所謂的同步內置
alert
函數最終會導致潛在的災難性重入。跨窗口腳本編寫如何影響
instanceof
;跨窗口腳本如何影響跨不同文檔的控制流;postMessage
希望如何解決這個問題。
有關最后兩個項目,請參見此答案。
最重要的是,您應該批判性地查看JavaScript,并承認由于歷史原因,它是一種不完善的語言(甚至比大多數語言還多),并且避免了最糟糕的麻煩??肆_克福德在這方面的工作絕對值得一讀(盡管我并不100%同意他所說的“好零件”)。

TA貢獻1757條經驗 獲得超8個贊
了解Crockford的Javascript:The Good Parts中的內容是一個很好的假設,即一個人是一個不錯的JS程序員。
您幾乎可以知道如何使用類似JQuery的良好庫,而仍然不知道Javascript的隱藏部分。
另一個注意事項是各種瀏覽器上的調試工具。JS程序員應該知道如何在不同的瀏覽器中調試其代碼。
哦! 而且知道JSLint會完全傷害您的感覺?。?/p>

TA貢獻1847條經驗 獲得超11個贊
如果您想成為一名真正的JavaScript忍者,那么您應該知道Perfection Kills JavaScript Quiz中每個問題的答案。
激發食欲的一個例子:
(function f(f){
return typeof f();
})(function(){ return 1; });
此表達式返回什么?
“數”
“未定義”
“功能”
錯誤
添加回答
舉報