理解JavaScript - 资源

时间:2009-02-28 06:25:23

标签: javascript video

使用StackOverflow的微小Diggit / Blog功能描述了here

我想发布以下我刚刚看到的Google技术谈话视频,我发现它非常有趣。

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

此处,JavaScript good parts由Douglas Crockford描述

我希望您觉得这个链接很有用。

现在问题部分:

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

5 个答案:

答案 0 :(得分:18)

JavaScript:不好的部分。

  1. 最大的错误是后期错误检测。 JavaScript很乐意让你访问一个不存在的对象成员,或者将错误数量的参数传递给一个函数,并用'undefined'对象填补空白,除非你刻意检查它们(这对于继续在各处做是不切实际的) ),将导致异常或稍后生成意外值。可能很久以后,导致在实际问题代码附近出现的细微且难以调试的错误。这些条件应该生成异常,除了JS最初没有引发异常。 'undefined'是一个快速而又肮脏的黑客,我们现在已经陷入困境。

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

  3. 即使是基于原型的OO语言,构造函数的模型也很奇怪,甚至会让有经验的用户感到困惑。忘记'new'会导致细微且难以调试的错误。虽然你可以从中创建一个可通过的类/实例系统,但是没有标准,并且人们仍在使用的早期教程中提出的大多数类系统都非常不合适,并且混淆了JavaScript实际上是在做。

  4. 缺乏约束方法。在调用它时访问“object.method”与'this'中的'object'进行魔术连接完全不直观,但是传递“object.method”作为引用会失去连接;没有其他语言这样工作。当发生这种情况时,'this'被设置为一个意外的值,但它不是'undefined'或其他会引发异常的东西。相反,所有属性访问都会在“窗口”上结束,以后会导致细微且难以调试的错误。

  5. 没有整数类型。数字看起来像一个但以各种方式分解(例如,n + 1 == n足够高的n)。任何时候NaN或Infinity都会潜入(如果您认为自己正在处理整数,则非常意外),您将无法立即发现;相反,将会出现细微且难以调试的错误。

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

  7. 一般来说,对于脚本语言来说,字符串处理很差。 String.split(,limit)和String.replace()没有做你想象的事情,导致......你知道。 toString()的结果通常很差,对调试没有用。与此同时,我们遇到了一堆垃圾Netscape认为可能有用,比如String.prototype.blink(),以及永久损坏的escape()。耶。

  8. 然后存在所有浏览器差异(IE仍然缺少基本对象上的许多基本方法)和DOM ......

  9. 最后,即使发生异常,它也会远离视图,因此作者甚至不会意识到出错了。结果是大多数网站都充满了错误;在IE中打开完整的JavaScript错误报告,结果无法使用。

  10. 让我觉得新一代程序员正在学习这种语言作为第一语言让我感到害怕。更糟糕的是,他们正在学习的大部分教程材料(“我的文章AEWsome R0LL0VERZ!”)总是鼓励最糟糕的做法。 'javascript:'URL,'eval()'用于所有内容,特定于浏览器的DOM访问... oy。

答案 1 :(得分:1)

在我看来,关于javascript的难点是:

  1. 跨浏览器开发/调试问题
  2. 跨浏览器dom /模型问题(事件冒泡等等)
  3. 缺乏“课程”(主观)
  4. 浏览器缺乏良好的可靠调试支持
  5. Firebug为FireFox提供了很多帮助,但我没有找到任何对IE有用的东西 - 而且仅仅是一个人必须这么做的事实。

    从好的方面来说,如果你从头开始构建一个脚本并理解每一步,它就会非常有趣和强大。

答案 2 :(得分:1)

alt text http://oreilly.com/catalog/covers/9780596517748_cat.gif Javascript the Good Parts也是一本非常不错的书。

对于Javascript Firefox + Firebug和Notepad ++是我的IDE。 jQuery(和各种插件)是我的框架。我对Javascript最大的抱怨是IE6

答案 3 :(得分:1)

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

就纯JavaScript问题而言,我仍然没有以允许我充分利用其功能的方式完全开发原型;但这比我个人的失败更少投诉。作为一种我非常喜欢JavaScript的语言,我对它的任何抱怨都被它与DOM的交互所掩盖。

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

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

虽然我没有看过这个视频,但本周我只读了“好的部分”。如果视频与书类似,那将非常有用。这本书本身很棒,因为它简洁而且内容丰富。它进入了一种语言讨论水平,人们在谷歌搜索信息时经常看不到这种语言,这使人们更好地理解整个语言。

答案 4 :(得分:0)

我非常喜欢原型设计,感觉比普通课程更强大。