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我刚刚编辑了我的帖子;)