从我学的经验来看,我觉得JavaScript难学主要是因为它的动态特性和基于对象的特性,比如“函数是对象,是一等公民”,这还算好理解的。但closure和prototype链就比较难理解,也比较麻烦了,如果这两个方面理解好了,基本JavaScript也就算会了。
初学JavaScript的时候容易走入误区——我自己也这样过——就是以为JavaScript是一门纯粹为浏览器而做的语言,用来实现特效什么的。这样就会很在乎浏览器编程,而浏览器编程是非常麻烦的,因为要跨浏览器很痛苦,这就给人“JavaScript太复杂,太难学”的印象。其实我觉得这是不对的,学习JavaScript不应该一上来就学针对浏览器的编程,而应该去学习语言本身,如果语言本身的理解够了,就会很容易看懂一些成熟框架是怎么实现的,会发现思路豁然开朗!对于浏览器方面,我的态度就是,浏览器差异无法避免,能记住我我就记住,不能记住的我就要用的时候再查,而真正做东西的话,很多时候都要通过用别的库来减少工作量的——这种时候不用关心浏览器差异,而更重要的是把代码设计好,提高复用性。