每个JavaScript程序员都应该具备能够说“我知道JavaScript”的东西吗?
不是jQuery。 不是YUI。不是(等)
框架可能很有用,但是它们经常隐藏一些关于JavaScript和DOM实际工作方式的丑陋细节。如果您的目标是能够说“我知道JavaScript”,那么在框架上投入大量时间是相反的。
以下是一些JavaScript语言功能,您应该了解这些功能在做什么并且不会被吸引住,但是对于许多人来说,它们并不是立即显而易见的:
那object.prop和object['prop']是同一件事(所以请您停止使用eval,谢谢);对象属性始终是字符串(即使是数组);[什么for...... in是和什么不是。
object.prop
object['prop']
eval
for
in
什么undefined是以及为什么闻到;为什么看似鲜为人知的in操作员是有益的并且不同于typeof/ undefined检查;hasOwnProperty; 目的delete。
undefined
typeof
hasOwnProperty
delete
该Number数据类型是一个真正的浮动; 使用浮点数与语言无关的困难;避免parseInt八进制陷阱。
Number
parseInt
全局变量和window属性如何碰撞;全局变量和文档元素如何在IE中不应该冲突,而应该如何冲突;也必须var在全球范围内使用以避免这种情况。
window
var
浏览器和用户代码之间的控制流;同步和异步执行;在控件流内部触发的事件(例如焦点)与控件返回时发生的事件和超时;如何调用所谓的同步内置alert函数最终会导致潜在的灾难性重入。
alert
跨窗口脚本编写如何影响instanceof;跨窗口脚本如何影响跨不同文档的控制流;postMessage希望如何解决这个问题。
instanceof
postMessage
最重要的是,您应该批判性地查看JavaScript,并承认由于历史原因,它是一种不完善的语言(甚至比大多数语言还多),并且避免了最糟糕的麻烦。克罗克福德在这方面的工作绝对值得一读(尽管我并不100%同意他所说的“好零件”)。