为什么其中一个是闭合而不是另一个?Javascript

why is one of these a closure and not the other one? Javascript

本文关键字:另一个 Javascript 一个 为什么      更新时间:2023-09-26

我一直在阅读有关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();

它们都具有相同的输出,因为我可以实现第一个不是闭包的返回调用的函数,而闭包只返回函数。 这是我能想到的唯一区别,这也是其中一个是闭包而不是另一个的部分原因吗?

//你可以试试这个:

var secret = "007";
function getSecret(){
    var secret = "008";
    var getValueFunc = function(){
        return secret;
    }
    return {
         getValue:getValueFunc
   };
}
var getValueFun = new getSecret();
getValueFun.getValue();