Cap*_*man 45 javascript syntax function
可能重复:
JavaScript:var functionName = function(){} vs function functionName(){}
在JavaScript中声明函数
我已经看到了两种不同的语法来定义javascript中的函数:
function f() {
...
}
Run Code Online (Sandbox Code Playgroud)
以及
var f = function() {
...
};
Run Code Online (Sandbox Code Playgroud)
这些有什么区别?其中一个被弃用了吗?
Mar*_*all 46
两者都没有被弃用,两者都有效.这里的区别在于,一个是命名函数(function f()),而另一个是等于函数(var f = function())的变量.
设置等于函数的变量时必须小心.这将有效:
var f = function(n) { console.log(n); };
f(3); // logs 3
Run Code Online (Sandbox Code Playgroud)
但是这会破坏,因为变量是在调用它之后定义的.
f(3); // what is f? breaks.
var f = function(n) { console.log(n); };
Run Code Online (Sandbox Code Playgroud)
但正常的功能很好.
function abc(n) { console.log(n); }
abc(3); // logs 3
xyz(5); // logs 5
function xyz(n) { console.log(n); }
Run Code Online (Sandbox Code Playgroud)
这是因为在执行之前会对代码进行分析,并且所有函数都可以调用.但是将var设置为等于函数就像将var设置为其他任何东西.它何时发生的顺序很重要.
现在有些令人困惑的东西......
还有"自动执行"的匿名功能.他们有各种各样的名字.最常见的方法看起来像这样:
(function() {
// code in here will execute right away
// since the () at the end executes this (function(){})
})();
Run Code Online (Sandbox Code Playgroud)
还有一个可以说是更好的版本.
!function() {
// again, the tailing () will execute this
}();
Run Code Online (Sandbox Code Playgroud)
有关匿名函数的更多信息,请查看此Stack Overflow帖子.
| 归档时间: |
|
| 查看次数: |
27795 次 |
| 最近记录: |