回答
对象文本的上下文中的第一个外是一个语法错误。
但是,我相信你问的是函数表达式和函数声明之间的区别。
您的第一个是函数表达式。您将一个匿名函数分配给一个变量。它的变量定义是,将悬挂到其作用域的顶部,但不是该函数的赋值。
第二个是函数声明。它的整个身体悬挂在示波器的顶部。
一般而言,通常使用函数表达式,因为它更具表现力。如果你需要递归地调用它(或者为了更好的详细的栈跟踪),你可以给它一个名字,但是记住IE会把这个名字泄漏到外部作用域。
第一个代码是唯一有效的产生property inside an object definition,就像这样:通过调用obj.collapse(fold);
第二个功能是使用简称
var obj = {
collapse: function(fold)
{
...
...
}
};
这个函数会被称为collapse(fold);
至于var name = function() { ... }
和function name() { ... }
之间的差异请参阅:var functionName = function() {} vs function functionName() {}
第一种语法在对象上声明方法。第二个声明了一个常规函数。
不一定是全局的,除非它在全局命名空间中...... – Nicole 2011-05-17 00:23:19
不一定是全局的。它可以嵌套在另一个函数中。 – 2011-05-17 00:24:41
采取了点。答案已纠正。 – 2011-05-17 00:28:06
第一个是无效的JavaScript,我假设你的意思是=
而不是:
。这在全球范围内是一样的,第一个使用匿名函数,第二个只是一些语法糖来命名函数。区别在于,在非全局范围中,首先会在全局范围内生成一个函数,第二个将在最近的范围中创建(对于第一个示例,使用var x = function() {}
的效果相同)。
它实际上是有效的,你最终会得到一个哈希函数嵌入到它,不是一个类,不太功能的土地,当定义回调作为配置的一部分时很常见。 – Stephen 2011-05-17 00:35:02
第一个问题是无论当前对象是什么(或者如果没有当前对象,那么它将会出错)并为其分配函数,都会创建一个名为“collapse”的属性。该函数只能通过其相关对象访问,方法是调用obj.collapse();
的行。
第二个是在全局名称空间中创建一个名为“collapse”的函数(即作为window
上的一个属性)。该功能可以在任何地方通过做collapse();
来调用。
- 1. 语法差异
- 2. SPARQL语法差异
- 3. Python异常语法差异?
- 4. SQL语句语法差异
- 5. jQuery函数语法差异
- 6. iPhone:差异@selector语法
- 7. 性能差异语法
- 8. event.target jquery:语法差异
- 9. Python乘法表语法差异
- 10. LINQ - 法VS查询语法差异
- 11. Javascript!和!差异
- 12. 差异与JavaScript
- 13. 差异的JavaScript
- 14. 差异IIF语句
- 15. Java数组声明的语法差异?
- 16. C#4与ActionScript 3:语法差异
- 17. 用于查找差异的MySQL语法
- 18. AJAX语法的差异:$ .ajax vs $ .post
- 19. 用$ _COOKIE语法差异替换$ _SESSION PHP
- 20. Linq使用SingleorDefault查询语法差异
- 21. WordPress的功能参数语法差异
- 22. LINQ左外连接语法差异
- 23. php的语法差异unix vs windows
- 24. 的Groovy与Java语法差异
- 25. 旧版本的C语法差异?
- 26. 无效的语法差异,奇怪
- 27. Javascript中异域语法“:?”
- 28. 日期差异Javascript
- 29. 大写差异(javascript)
- 30. JavaScript编码差异
让我换个口吻:这些有什么区别? – sapiensgladio 2011-05-17 00:21:07
1.分号,2.单词交换':)' – 2011-05-17 00:22:46