函数内部的return语句有什么用?

Joh*_*per 4 javascript

    var obj = {

        func: function() {    
        return: {
           add: function() {
             }
          } 
        },
        somefunc: function() {
      }
   } 
Run Code Online (Sandbox Code Playgroud)

我用来转换这个的原始代码...

var hash = (function() {
     var keys = {};
     return {         
     contains: function(key) {
     return keys[key] === true;         
     },
     add: function(key) { 
     if (keys[key] !== true){
         keys[key] = true;             
     }     
  }; 
})();
Run Code Online (Sandbox Code Playgroud)

问题:

  1. return关键字有什么用?
  2. 我的课程可以像这样构建吗?

Jac*_*lin 16

在最基本的层面上,return关键字定义了函数应返回的内容.所以,如果我有这个功能:

function foo() { return 4; }
Run Code Online (Sandbox Code Playgroud)

然后叫它:

var bar = foo();
Run Code Online (Sandbox Code Playgroud)

foo()将返回4,因此现在的价值bar也是4.

根据您的具体示例:

在这个用例中,return用于基本上限制对变量内部hash变量的外部访问.

任何写的函数如下:

(function() {...})();
Run Code Online (Sandbox Code Playgroud)

是自我调用,这意味着它立即运行.通过将值设置hash为自调用函数,这意味着代码可以尽快运行.

该函数然后返回以下内容:

return {         
    contains: function(key) {
        return keys[key] === true;         
    },
    add: function(key) { 
        if (keys[key] !== true){
            keys[key] = true;             
        }
    }     
};
Run Code Online (Sandbox Code Playgroud)

这意味着我们可以同时访问containsadd函数:

hash.contains(key);
hash.add(key);
Run Code Online (Sandbox Code Playgroud)

在里面hash,还有一个变量,keys但这不是由设置的自调用函数返回的hash,因此我们无法访问key外部hash,所以这不起作用:

hash.keys //would give undefined
Run Code Online (Sandbox Code Playgroud)

它本质上是一种构造代码的方法,可以通过使用JavaScript闭包来创建私有变量.有关更多信息,请查看此帖子:http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-private-variables-in-javascript/

希望这可以帮助 :)

插口.