几个星期后,我将有机会向我的同事介绍JavaScript。此前的项目主要使用Java和C ++。我需要解释的JavaScript最重要或最重要的方面是什么?我列出了一些我已经确定的重要事项:
我也将从A re-introduction to JavaScript开始。
我错过了什么?我正在寻找任何东西,从大型语言功能到小问题。
答案 0 :(得分:13)
在YUI Theater查看Doug Crockford的所有会话。它们被称为“Javascript编程语言”,“Javascript,好的部分”,“DOM,一个不方便的API”和“高级Javascript”。在起草课程时,它可能会让你成为一个来源,并展示其中一些可能会消除java程序员自然会有的“米老鼠语言”偏见。
您可以下载所有这些会话。
答案 1 :(得分:8)
我期望的一个问题值得一提的是范围界定的差异。例如,我基本上从Java转到Javascript,我花了很多时间才看到为什么像下面的代码没有按预期工作(即每个按钮警告“按钮9”):
function myFn() {
...
for (var i = 0; i < 10; i++) {
elems[i].onClick = function() { alert ("Button " + i); };
}
}
即使您阅读了解释并且可以遵循它,仍然需要一段时间才能本能地发现导致此错误的代码。
答案 2 :(得分:7)
首先要确保他们知道Java!= JavaScript;)
答案 3 :(得分:6)
JavaScript is highly dynamic,这对于静态语言的人来说很难掌握:
动态
动态类型
与大多数脚本语言一样,类型与值相关联,而不是与变量相关联。例如,变量x可以绑定到一个数字,然后反弹到一个字符串。 JavaScript支持各种方法来测试对象的类型,包括鸭子类型。
作为关联数组的对象
JavaScript几乎完全基于对象。对象是关联数组,用原型进行扩充(见下文)。对象属性名称是关联数组键:obj.x = 10和obj [“x”] = 10是等价的,点符号只是语法糖。可以在运行时添加,更改或删除属性及其值。对象的属性也可以通过for ... in循环来枚举。
答案 4 :(得分:4)
我实际上在前几天为C ++ dev发现了really excellent link映射 OO概念,这应该是合适的,因为一旦你超越了语法变体,问题就是“你怎么做X?“
哦和一流的功能!
答案 5 :(得分:4)
如果内存服务,我对JavaScript的第一次精神跳跃是:
1 - 它在HTML中,但它正在制作HTML。弄清楚如何组织它以获得理智,并把它放在正确的地方做正确的事情是关键。
2 - 服务器提供它但它在客户端上运行。代码在浏览器内运行的事实,在一个无法直接访问服务器内部的位置需要一些人习惯。
3 - 何时使用它。有许多方面可以使用JSP(或其他服务器端动态页面生成机制)或JavaScript。重要的是要感受何时它是适合工作的正确工具。看到新的JavaScript开发人员在JavaScript中执行所有并不罕见。现在他们有了锤子,整个世界已经变成了钉子。
4 - 测试&amp;调试 - 我知道有更好更好的工具,但是要意识到每个支持的浏览器都需要重新测试,如何在每个浏览器中调试浏览器代码是一本很好的东西,这些书似乎从来没有很好地教过。
答案 6 :(得分:4)
告诉他们所有人都要获得Javascript: The Definitive Guide的副本。
我是一名职业C ++程序员,几年前不得不学习Javascript,这本书在学习语言方面绝对具有无可估量的价值。它也为一些本地Javascript对象(如String和Number。)提供了很好的参考。
答案 7 :(得分:2)
JSON中使用的javascript的字面语法也是一个重要特性。不难,但仍然很重要。
答案 8 :(得分:2)
你肯定会花一些时间来解释Javascript中没有类这样的东西,以及基于原型的继承和基于类的继承之间的区别。
如果您正在与一群Java / C ++编码器交谈,我可以看到这是一个棘手的问题。
答案 9 :(得分:1)
还教他们关于图书馆,例如this obvious example。对于很多情况,声明性&gt;操纵DOM时的命令。它也很漂亮。
答案 10 :(得分:-1)
教授DOM和HTML更好。这形成了Javascript的良好基础。