每个 JavaScript 程序员都应该知道什么?
是否有一组每个 JavaScript 程序员都应该知道才能说“我知道 JavaScript”的事情?
-
不是 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% 同意他的“好零件”是什么)。
-
-
每个程序员都应该了解安全性什么?
2022-03-22 关注 0 浏览48 1答案
-
每个JavaScript程序员应该知道什么?
2021-02-02 关注 0 浏览104 1答案
-
“每个程序员都应该知道的关于内存的帽子”有多少仍然有效?
2022-07-28 关注 0 浏览14 1答案
-
每个程序员应该读的最有影响力的书是什么?
2021-01-30 关注 0 浏览61 1答案
-
用JavaScript排序:每个比较函数都应该有一个“返回0”语句吗?
2021-02-02 关注 0 浏览72 1答案
-
为什么 C++ 程序员应该尽量减少“新”的使用?
2022-03-22 关注 0 浏览46 1答案
-
作为学习Python的Java程序员,我应该注意什么?
2021-01-30 关注 0 浏览68 1答案
-
每个MySQL表都应该有一个自动递增的主键吗?
2021-04-20 关注 0 浏览62 1答案
-
每个优秀的 .NET 开发人员都应该能够回答的问题?
2022-05-26 关注 0 浏览25 1答案
-
集群内每个节点都应该配 RAID,这样避免单磁盘损坏,影响整个节点运行?()
2022-03-03 关注 0 浏览33 1答案