Javascript 声明一个带var还是不带var的函数更好?

Javascript 声明一个带var还是不带var的函数更好?,javascript,function,Javascript,Function,可能重复: 我看到人们用javascript声明函数有两种方式。要么: foo = function() { //Do stuff } 或 我是javascript新手,想知道两者之间是否有真正的区别。一个比另一个更好使用,还是取决于具体情况?AFAIK,如果您不声明var,那么您的函数将被分配到全局范围(与窗口对象的范围级别相同),但是如果您将其声明为var它将包含在其父范围内 编辑:为了澄清Tomalak的响应后,函数将属于其父作用域,但是如果父作用域是执行的函数,则在执行封闭函数后

可能重复:

我看到人们用javascript声明函数有两种方式。要么:

foo = function()
{
  //Do stuff
}


我是javascript新手,想知道两者之间是否有真正的区别。一个比另一个更好使用,还是取决于具体情况?

AFAIK,如果您不声明
var
,那么您的函数将被分配到全局范围(与
窗口
对象的范围级别相同),但是如果您将其声明为
var
它将包含在其父范围内


编辑:为了澄清Tomalak的响应后,函数将属于其父作用域,但是如果父作用域是执行的函数,则在执行封闭函数后,在全局上下文中可以访问任何声明为不带var的函数。

AFAIK,如果未声明
var
,则函数将被分配到全局范围(与
窗口
对象的范围级别相同),但是如果将其声明为
var
,则函数将包含在其父范围内

编辑:为了澄清Tomalak的响应后,函数将属于其父作用域,但是如果父作用域是执行的函数,则在执行封闭函数后,在全局上下文中可以访问未声明var的任何函数。

有两种方法:

  • 在变量中声明它
  • 使用默认函数声明
在您的例子中,您试图在变量中声明它。声明变量(无论是否为函数)以
var
语法开始

var foo = function() { }; // please note that semicolon (;)
通常定义函数时:

function foo() { }
因此,同样,在您的情况下,
var
是必需的,除非您预先定义它:

var foo;
foo = function() { };
编辑:正如James所说,如果您希望在全局范围内定义它,您可以放弃
var
关键字。但老实说,如果希望在另一个作用域级别上定义变量,则最好预先定义变量。

有两种方法:

  • 在变量中声明它
  • 使用默认函数声明
在您的例子中,您试图在变量中声明它。声明变量(无论是否为函数)以
var
语法开始

var foo = function() { }; // please note that semicolon (;)
通常定义函数时:

function foo() { }
因此,同样,在您的情况下,
var
是必需的,除非您预先定义它:

var foo;
foo = function() { };

编辑:正如James所说,如果您希望在全局范围内定义它,您可以放弃
var
关键字。但老实说,如果希望在另一个作用域级别上定义变量,则最好预先定义变量。

最好使用
var
进行声明,否则可能会影响全局作用域内的任何其他var。例如,检查此问题以了解更多信息:

最好使用
var
进行声明,否则您可能会影响全局范围内的任何其他var。例如,检查这个问题以了解更多信息:

这不是真的。函数将始终包含在其父作用域中。@Tomalak您是对的,这是我的Part上的一个错误,不是真的。函数将始终包含在其父作用域中。@Tomalak您是对的,这是我的一个错误。
var
不是必需的,但应该使用。@FelixKling我刚刚编辑了我的文章;)
var
不是必需的,但应该使用。@FelixKling我刚刚编辑了我的帖子;)