2009-02-28 30 views
5

使用StackOverflow上的微小Diggit /博客功能描述here了解JavaScript的 - 资源

我想后我刚才看到下面的谷歌技术讲座视频,我发现挺有意思的。

我一直有理解javascript“自然”的问题。

这里,JavaScript good parts由道格拉斯·克罗克福德

描述我希望你能找到这个链接有用。

现在问题部分:

什么是您对javascript的投诉? 你使用IDE进行javascript编辑吗? 你认为这段视频有助于理解“好的部分”吗?

回答

17

JavaScript:糟糕的部分。

  1. 最大的错误是延迟错误检测。 JavaScript会高兴地让你访问一个不存在的对象成员,或者将错误数量的参数传递给一个函数,并用'未定义'的对象填补空白,除非你故意检查它们(这到处都是不切实际的)将在稍后导致异常或产生意外的值。可能会晚得多,导致在实际问题代码附近出现微妙且难以调试的错误。这些条件应该产生异常,除了JS最初并没有例外。 'undefined'是我们现在坚持的一种快速而肮脏的黑客攻击。

  2. 未声明的变量默认为全球范围。这几乎从来都不是你想要的,当两个函数都忘记'var'并开始执行相同的全局时,可能会导致细微的和难以调试的错误。

  3. 即使对于基于原型的OO语言,构造函数的模型也很奇怪,甚至会让有经验的用户感到困惑。忘记“新”可能会导致微妙且难以调试的错误。尽管可以通过构建一个可通过的类/实例系统,但没有标准,大多数早期教程中提到的人们仍在使用的类系统都极其不足,并且混淆了JavaScript实际正在做的事情。

  4. 缺乏绑定方法。在调用它时访问“object.method”与'this'中的'object'建立魔术连接,但传递“object.method”作为引用失去连接是完全不直观的;没有其他语言以这种方式工作。发生这种情况时,'this'被设置为一个意想不到的值,但它不是'未定义的'或其他会引发异常的东西。相反,所有的财产访问都以'窗口'结尾,以后导致微妙且难以调试的错误。

  5. 没有整数类型。数字看起来像一个,但以各种方式分解(例如,对于足够高的n,n + 1 == n)。任何时候NaN或Infinity都会潜入(意想不到的是,如果你认为你在处理整数),你不会立即发现;相反,将会出现细微的,难以调试的错误。

  6. 没有关联数组类型。对象看起来像一个,但在各种意想不到的按键下分解。数组不是纯粹的列表。任何时候,当你使用'for ... in'时,你可能陷入陷阱,并会遇到......是的,微妙和难以调试的错误。

  7. 通常不好的字符串处理,至少对于脚本语言来说。 String.split(,limit)和String.replace()不会做你可能会想的事情,导致...你知道。 toString()的结果一般很差,对调试无用。与此同时,我们陷入了一堆垃圾网景认为可能是有用的,比如String.prototype.blink()和永久破解的escape()。好极了。

  8. 而且然后有所有的浏览器的差异(IE仍然缺少对基本对象很多基本方法),和DOM ...

  9. 最后,即使当异常确实发生它隐藏在视野之外,所以作者甚至不会意识到有什么不对。结果是大多数网站都充满了错误;在IE中打开完整的JavaScript错误报告,结果无法使用。

它让我害怕认为新一代的程序员正在把这种东西当作第一语言来学习。更糟糕的是,他们从中学到的大部分教程材料(“我的新课程”)总是鼓励最糟糕的练习。 'javascript:'网址,'eval()',浏览器特定的DOM访问... oy。

+0

提及默认全局变量+1 :-) – bandi 2009-02-28 13:00:18

1

关于JavaScript最艰难的部分,在我看来,就是:

  1. 跨浏览器的开发/调试问题
  2. 跨浏览器的DOM /模型问题(事件冒泡等)
  3. 缺乏“类”(主观)
  4. 缺乏在浏览器中良好稳固的调试支持的

Firebug为FireFox提供了很多帮助,但是我还没有发现任何对IE来说很有用的东西 - 而且事实上人们都很困难。

从光明的角度来看,如果您从头开始构建脚本并理解每一步,它可以非常令人愉快和强大。

+0

在JS中有很多类实现,如果你遇到这种情况。我喜欢自己的原型继承。 – Zach 2009-02-28 09:03:41

1

我使用JavaScript时最大的抱怨是DOM绑定,但这些并不是真正的JavaScript错,因为每个浏览器都以自己的方式实现它。沿着这些路线,IE是最严重的罪犯。

就纯粹的JavaScript问题而言,我仍然没有充分注意原型,让我可以充分利用它的功能;但这不是一个投诉,而是我个人的失败。作为一种语言,我非常喜欢JavaScript,并且我对它的任何抱怨都被它与DOM的交互所掩盖。

我主要使用Firefox + Firebug进行主编码和调试。如果浏览器遇到特殊问题,我会使用Opera和Safari中的调试器。当我需要调试IE时,Heaven会帮助我。

我在任何文本编辑器可用并具有语法高亮显示的代码。我倾向于使用YUI框架,但那是因为我知道它是最好的;我希望有一天能够更多地了解其他框架,并决定哪些对个人项目最好。

虽然我没有看过视频,但我只是在本周阅读了“The Good Parts”。如果视频与本书一样,它会非常有帮助。这本书很棒,因为它简洁而且内容丰富。它进入了语言讨论的层次,在Google上搜索信息时不会经常看到足够多的信息,这使得人们能够更好地理解整个语言。

0

我真的很喜欢原型设计,感觉比普通类更强大。