Javascript 函数定义语法

标签 javascript function syntax

<分区>

Possible Duplicate:
JavaScript: var functionName = function() {} vs function functionName() {}
Declaring functions in JavaScript

我见过在 javascript 中定义函数的两种不同语法:

function f() {
   ...
}

还有

var f = function() {
    ...
};

它们之间有什么区别?其中之一是否已弃用?

最佳答案

两者都没有被弃用,并且都可以工作。这里的区别在于,一个是命名函数(function f()),而另一个是一个等于函数的变量(var f = function())。

将变量设置为函数时必须小心。这将起作用:

var f = function(n) { console.log(n); };
f(3); // logs 3

但这会中断,因为变量是在调用它之后定义的。

f(3); // what is f? breaks.
var f = function(n) { console.log(n); };

但正常功能工作正常。

function abc(n) { console.log(n); }

abc(3); // logs 3
xyz(5); // logs 5

function xyz(n) { console.log(n); }

这是因为代码在执行前已经过分析,所有函数都可以调用。但是将 var 设置为函数就像将 var 设置为其他任何东西一样。它发生的顺序很重要。

现在来看一些更令人困惑的东西......

还有“自执行”的匿名函数。他们有各种各样的名字。最常见的方法如下所示:

(function() {
    // code in here will execute right away
    // since the () at the end executes this (function(){})
})();

还有一个可以说是更好的版本。

!function() {
    // again, the tailing () will execute this
}();

查看 this Stack Overflow post有关匿名函数的更多信息。

关于Javascript 函数定义语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9423693/

相关文章:

haskell神奇的代码,这里发生了什么

c - "static"在C中是什么意思?

javascript - 让 AngularJS 将依赖项注入(inject)对象,就像它已经为 Controller 所做的那样

javascript - 如何将 JSON 对象转换为 base64 字符串?

javascript - 使用 Angular 根据单选按钮选项更改按钮文本

javascript - Reactjs - 在动态元素渲染中将 ref 添加到输入

javascript - array.sort() 没有给出所需的结果

string - 使用字符串作为函数名 - golang

Javascript:乘法持久性问题建议的解决方案执行超时

javascript - 为什么在删除之前使用点符号检查属性比直接删除属性更快?