小编典典

每个 JavaScript 程序员都应该知道什么?

all

是否有一组每个 JavaScript 程序员都应该知道才能说“我知道 JavaScript”的事情?


阅读 73

收藏
2022-03-29

共1个答案

小编典典

不是 jQuery。 不是YUI。不是(等等等等)

框架可能很有用,但它们通常会向您隐藏 JavaScript 和 DOM 实际工作方式的有时丑陋的细节。如果你的目标是能够说“你懂
JavaScript”,那么在框架上投入大量时间是不合时宜的。

这里有一些 JavaScript 语言特性,你应该知道它们在做什么,而不是被抓住,但对很多人来说并不是很明显:

  • object.propobject['prop']是一回事(请停止使用eval,谢谢);该对象属性始终是字符串(即使对于数组);什么for......in是为了(和它不是)。

  • 属性嗅探;什么undefined是(以及为什么闻起来);为什么看似鲜为人知的in运算符是有益的,并且不同于typeof/undefined检查;hasOwnProperty; 的目的delete

  • Number数据类型实际上是浮点数;使用浮点数的与语言无关的困难;避免parseInt八进制陷阱。

  • 嵌套函数作用域;var在要避免意外全局变量的范围内使用的必要性;范围如何用于闭包;闭环问题。

  • 全局变量和window属性如何冲突;全局变量和文档元素如何在 IE 中不发生冲突而发生冲突;也必须var在全局范围内使用以避免这种情况。

  • function该语句如何在其前面的代码之前“提升”定义;函数语句和函数表达式的区别;为什么不应该使用命名函数表达式。

  • 构造函数、prototype属性和new运算符如何真正起作用;利用它来创建您真正想要的普通类/子类/实例系统的方法当您可能想要使用基于闭包的对象而不是原型时。(大多数 JS 教程材料在这方面都非常糟糕;我花了好几年才明白这一点。)

  • 如何this在调用时确定,不受约束;因此,方法传递如何不像您对其他语言所期望的那样工作;如何关闭或Function#bind可以用来解决这个问题。

  • 其他 ECMAScript 第五版功能,如indexOfforEach以及函数式编程方法Array;如何修复旧浏览器以确保您可以使用它们;将它们与内联匿名函数表达式一起使用以获得紧凑、可读的代码。

  • 浏览器和用户代码之间的控制流;同步和异步执行;在控制流中触发的事件(例如焦点)与控制返回时发生的事件和超时;如何调用所谓的同步内置alert函数最终会导致潜在的灾难性重入。

  • 跨窗口脚本如何影响instanceof;跨窗口脚本如何影响跨不同文档的控制流;postMessage希望如何解决这个问题。

最重要的是,您应该以批判的眼光看待JavaScript,承认由于历史原因它是一种不完美的语言(甚至比大多数语言还要多),并避免其最严重的问题。克罗克福德在这方面的工作绝对值得一读(尽管我不是100% 同意他的“好零件”是什么)。

2022-03-29