Javascript 为什么要在函数中声明全局变量?
我有以下代码:Javascript 为什么要在函数中声明全局变量?,javascript,oop,Javascript,Oop,我有以下代码: function boo() { this.is_global = "Yes!"; } 当我运行boo时;,在窗口对象中有is_global,我的意思是is_global进入全局上下文。 我只希望在boo函数中使用is_global 这是正常的行为吗 是的,这是正常行为。如果您的函数是全局定义的,那么这只是一个窗口,添加到窗口中的任何内容都是全局的。是的,这是正常行为。如果您的函数是全局定义的,则这只是窗口,添加到窗口中的任何内容都是全局的。这指的是窗口。如果要引用该函
function boo() {
this.is_global = "Yes!";
}
当我运行boo时;,在窗口对象中有is_global,我的意思是is_global进入全局上下文。
我只希望在boo函数中使用is_global
这是正常的行为吗 是的,这是正常行为。如果您的函数是全局定义的,那么这只是一个窗口,添加到窗口中的任何内容都是全局的。是的,这是正常行为。如果您的函数是全局定义的,则这只是窗口,添加到窗口中的任何内容都是全局的。这指的是窗口。如果要引用该函数,请使用:
arguments.callee.is_global = "Yes!";
现在:
另一种方法是,在向boo添加属性时,只需使用它自己的名称来引用它
function boo() {
boo.is_global = "Yes!";
}
请注意,这将修改原始boo函数对象。如果您希望修改将boo用作构造函数而产生的所有boo实例,请参见此处的其他答案。这指的是该窗口。如果要引用该函数,请使用:
arguments.callee.is_global = "Yes!";
现在:
另一种方法是,在向boo添加属性时,只需使用它自己的名称来引用它
function boo() {
boo.is_global = "Yes!";
}
请注意,这将修改原始boo函数对象。如果您希望修改将boo用作构造函数而产生的所有boo实例,请参见此处的其他答案。要使其成为被调用的函数,必须使用new作为对象构造函数调用该函数
这将创建一个属性为全局的boo实例。这不会在构造函数本身上创建属性
如果您不使用new或apply之类的方法,那么这就是调用函数的对象。因为在这种情况下没有对象,所以使用默认对象。在web浏览器的上下文中,默认对象是window。因此:
与
var foo = window.boo();
这是boo中的窗口。要调用此函数,必须使用new作为对象构造函数调用此函数
这将创建一个属性为全局的boo实例。这不会在构造函数本身上创建属性
如果您不使用new或apply之类的方法,那么这就是调用函数的对象。因为在这种情况下没有对象,所以使用默认对象。在web浏览器的上下文中,默认对象是window。因此:
与
var foo = window.boo();
这是boo内部的窗口。请退房
我猜您想声明一个局部变量,所以请使用。签出
我猜您想声明一个局部变量,所以请使用。您不能使用参数;最好避免。那么,使用var is_global=Yes有什么区别吗;boo.is_global=Yes@是的,有。如果使用var is_global=Yes;,在函数外部计算boo.is_global将返回undefined。如果使用此处的方法,boo.is_global将返回Yes!。不能使用参数。被调用方是严格模式;最好避免。那么,使用var is_global=Yes有什么区别吗;boo.is_global=Yes@是的,有。如果使用var is_global=Yes;,在函数外部计算boo.is_global将返回undefined。如果使用此处的方法,boo.is_global将返回Yes!。