JavaScript&;自执行函数
我试图理解(可能是简单的概念)关于JS的内容,我将下面的代码放在一起解释我没有理解的内容。我不明白的是name变量存储在哪里。这个变量现在是全局变量吗JavaScript&;自执行函数,javascript,jquery,function,Javascript,Jquery,Function,我试图理解(可能是简单的概念)关于JS的内容,我将下面的代码放在一起解释我没有理解的内容。我不明白的是name变量存储在哪里。这个变量现在是全局变量吗 (function($) { var name = ''; $.helloWorld = function(yourName) { name = yourName; console.log("Hello " + yourName); } }(jQuery)); name变量是外部函数的局部变量,因为它是用var
(function($) {
var name = '';
$.helloWorld = function(yourName) {
name = yourName;
console.log("Hello " + yourName);
}
}(jQuery));
name
变量是外部函数的局部变量,因为它是用var
关键字声明的。内部函数是一个闭包,包含对该变量的引用。这里有一个更好的例子来说明这一点:
(function($) {
var name = '';
$.setName = function(newName) {
name = newName;
}
$.showName = function() {
console.log("Name is: " + name);
}(jQuery));
定义后,您可以执行以下操作:
$.setName("Larry");
$.showName();
$.setName("Fred");
$.showName();
请参见
name
变量是外部函数的局部变量,因为它是用var
关键字声明的。内部函数是一个闭包,包含对该变量的引用。这里有一个更好的例子来说明这一点:
(function($) {
var name = '';
$.setName = function(newName) {
name = newName;
}
$.showName = function() {
console.log("Name is: " + name);
}(jQuery));
定义后,您可以执行以下操作:
$.setName("Larry");
$.showName();
$.setName("Fred");
$.showName();
请参见这将有助于您理解:
(function(){
var name;
var scope1;
// Here you can use scope1 and name
(function(){
var name; // <------------------------
var scope2; // |
// |
// Here you can use scope1,scope2, and name
(function(){
var name; // <------------------------------
var scope3; // |
// |
// Here you can use scope1,scope2,scope3, and name
})();
})();
})();
// Any\variable declared outside of any function scope is in the global scope.
// A variable declared here can be accessed by window.name from any scope
var name = 5;
(函数(){
变量名;
var作用域1;
//在这里,您可以使用scope1和name
(功能(){
var name;//这有助于您理解:
(function(){
var name;
var scope1;
// Here you can use scope1 and name
(function(){
var name; // <------------------------
var scope2; // |
// |
// Here you can use scope1,scope2, and name
(function(){
var name; // <------------------------------
var scope3; // |
// |
// Here you can use scope1,scope2,scope3, and name
})();
})();
})();
// Any\variable declared outside of any function scope is in the global scope.
// A variable declared here can be accessed by window.name from any scope
var name = 5;
(函数(){
变量名;
var作用域1;
//在这里,您可以使用scope1和name
(功能(){
var name;//变量的作用域是该闭包,这是IIFEs的点,用于封装代码而不是将变量泄漏到外部作用域。变量的作用域是该闭包,这是IIFEs的点,用于封装代码而不是将变量泄漏到外部作用域。谢谢,但是如何从helloWorld函数访问name变量?有什么方法可以使用Java的this关键字吗?您可以通过名称引用它(就像任何其他变量一样)。您可以让helloWorld函数像这样打印它的值:alert(name)
好的,所以我也应该避免使用内部函数参数名,因为它与外部函数变量名冲突,因为我不能像Java那样真正区分它们。是的。这些只是嵌套的函数作用域,而不是对象。好的,谢谢!将这一个标记为正确答案,因为它既是第一个答案,也是第二个答案显然答案是正确的:-)谢谢,但是我如何从helloWorld函数中访问name变量?有没有办法让Java使用这个关键字?您可以通过名称来访问它(就像任何其他变量一样)。您可以让helloWorld函数像这样打印它的值:alert(name)
好的,所以我也应该避免使用内部函数参数名,因为它与外部函数变量名冲突,因为我不能像Java那样真正区分它们。是的。这些只是嵌套的函数作用域,而不是对象。好的,谢谢!将这一个标记为正确答案,因为它既是第一个答案,也是第二个答案显然是一个正确的答案:-)谢谢你把它充实了一点。提升你的努力!谢谢你把它充实了一点。提升你的努力!