繁体   English   中英

function 中的 return 语句有什么用?

[英]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;             
     }     
  }; 
})();

问题:

  1. return关键字有什么用?
  2. 我的 class 可以这样构造吗?

在最基本的层面上, 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;             
        }
    }     
};

这意味着我们可以访问containsadd 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM