[英]What is the use of return statement inside a function?
var obj = {
func: function() {
return: {
add: function() {
}
}
},
somefunc: function() {
}
}
我用来转换它的原始代码...
var hash = (function() {
var keys = {};
return {
contains: function(key) {
return keys[key] === true;
},
add: function(key) {
if (keys[key] !== true){
keys[key] = true;
}
};
})();
问题:
在最基本的层面上, return
关键字定义了 function 应该返回的内容。 所以如果我有这个 function:
function foo() { return 4; }
然后调用它:
var bar = foo();
foo()
将返回4
,因此现在bar
的值也是4
。
在您的具体示例上:
在这个用例中, return
值基本上用于限制外部访问hash
变量中的变量。
任何 function 都这样写:
(function() {...})();
是自调用的,这意味着它会立即运行。 通过将hash
的值设置为自调用 function,这意味着代码会尽快运行。
function 然后返回以下内容:
return {
contains: function(key) {
return keys[key] === true;
},
add: function(key) {
if (keys[key] !== true){
keys[key] = true;
}
}
};
这意味着我们可以访问contains
并add
function ,如下所示:
hash.contains(key);
hash.add(key);
Inside hash
, there is also a variable keys
but this is not returned by the self-invoking function that hash
is set to, hence we cannot access key
outside of hash
, so this wouldn't work:
hash.keys //would give undefined
它本质上是一种结构化代码的方式,可用于通过使用 JavaScript 闭包来创建私有变量。 查看这篇文章了解更多信息: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-private-variables-in-javascript/
希望这可以帮助:)
杰克。
立即执行的匿名 function 通常用于创建 scope。 您在 scope 中声明的任何变量都是 function 的本地变量,因此它们不会污染全局 scope。
return 语句用于从匿名 function 返回一个 object:
var hash = (function() {
return { ... };
})();
您可以使用命名的 function 编写相同的代码:
function createHashObject() {
return { ... };
}
var hash = createHashObject();
我不知道你的实际代码是什么,但这些是闭包约翰
function addGenerator( num ) {
return function( toAdd ) {
return num + toAdd
};
}
var addFive = addGenerator( 5 );
alert( addFive( 4 ) == 9 );
在这里你可以看到 return 的使用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.