这两者的区别是什么?
What is the difference between these two?
我看到以下JavaScript函数的工作原理完全相同,那么它们之间的区别是什么?功能有:
var functionName=function(){
//some code here
};
function functionName(){
//some code here
}
我用同样的方式调用它们:
functionName();
请不要告诉我语法不同,除此之外还有什么不同吗?
1)speed of execution
2)Memory utilization etc.
提前感谢!
这个问题在StackOverflow中已经回答过很多次了。这只是命名的方式。因此,从这些回答中,我想说:
-
函数声明和变量声明总是被JavaScript解释器不可见地移动("提升")到其包含作用域的顶部。函数参数和语言定义的名称显然已经在那里了。
-
优势,缺点:
命名函数有几个优点:
- 用于元分析的
- 名称。
functionInstance.name
会告诉您名字。 - 更重要的是,该名称将在堆栈跟踪中打印。
- 名称还有助于编写自文档或文字代码。
命名函数表达式有一个缺点
- IE有NFE内存泄漏
- 名称。
-
另一个主要区别
区别在于
functionTwo
是在脚本块的解析时定义的,而functionOne
是在运行时定义的。例如:<script> // Error functionOne(); var functionOne = function() { } </script> <script> // No error functionTwo(); function functionTwo() { } </script>
引用
- var functionName = function() {} vs function functionName() {}
- 在JavaScript中是命名函数还是匿名函数?
- 命名函数表达式demyfied
- 函数声明与函数表达式。
- var functionName = function() {} vs function functionName() {}
- 第一个是命名函数表达式,它应该返回一些值给调用者。
- 第二个只是一个函数,是否返回值由你决定
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 全局变量和全局对象的属性之间有什么区别吗
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在ember/handlers中使用value和valueBinding有什么区别
- 在JavaScript中拆分日期字符串的更好方法是什么
- Javascript .call() 用法.一个工作案例,一个不是.有什么区别
- 咖啡脚本中的“if a 不是未定义的”和“if a”有什么区别
- fs.link和fs.symlink之间有什么区别?他们是独立于平台的吗
- 都是'sync'event和Backbone.sync以某种方式连接在一起——两者之间有什么区别
- 这真的是异步的吗?或者它发生得太快了,没有什么区别
- emu -model、emu -restless和emu之间的主要区别(优缺点)是什么?
- 良性和恶意的javascript(都是混淆的)有什么区别?
- function()在jQuery中是什么意思?这个和$(这个)有什么区别
- 什么是数组,数组和对象有什么区别,以及何时以及为什么使用数组
- 这种比较和逻辑上的“比较”有什么区别;而不是“;操作人员
- 使用""有什么区别吗?或者不是javascript对象中的属性