为什么其中一个是关闭而不是另一个? JavaScript的

时间:2016-02-01 22:52:04

标签: javascript function closures

我一直在阅读关于JS的关闭,我不会说我完全理解它,但至少在阅读了不同网站的一些例子和信息之后对它有一些了解但我真的不能理解为什么其中一个是封闭而不是另一个封闭。

未关闭功能

var secret = "007";

function getSecret(){
    var secret = "008";

    function getValue(){
        return secret;
    }

    return getValue();
}

getSecret();

关闭功能

var secret = "007";

function getSecret(){
    var secret = "008";

    function getValue(){
        return secret;
    }

    return getValue;
}

var getValueFun = getSecret();
getValueFun();

它们都具有相同的输出,因为我可以意识到第一个不是闭包返回调用的函数,而闭包只返回函数。这是我能想到的唯一区别,这就是为什么其中一个是封闭而不是另一个的原因之一?

1 个答案:

答案 0 :(得分:-2)

//你可以试试这个:

var secret = "007";

function getSecret(){
    var secret = "008";

    var getValueFunc = function(){
        return secret;
    }

    return {
         getValue:getValueFunc
   };
}

var getValueFun = new getSecret();
getValueFun.getValue();