javascript - 为什么这个内部函数返回未定义?

标签 javascript function

我这样做

function myFunction() {
    var myVar = "I think I am encapsulated";

    function getMyVar() {
        return myVar;
    }
}

var myProperty = myFunction;
myProperty.getMyVar();  // tells me myProperty.getMyVar is not a function.

function myFunction() {
    var myVar = "I think I am encapsulated";

    function getMyVar() {
        return myVar;
    }
}

var myProperty = myFunction();
myProperty.getMyVar();   // tells me myProperty is undefined

甚至

function MyFunction() {
    var myVar = "I think I am encapsulated";

    function getMyVar() {
        return myVar;
    }
}

var myProperty = new MyFunction();
myProperty.getMyVar();  // tells me myProperty.getMyVar is not a function.

在这三种情况下我都遇到了问题。我在所有三个部分中都将问题作为行注释包括在内。现在,在有人告诉我只使用闭包之前,我并不是要理解闭包,而是要准确理解内部函数会发生什么。

如果您能解释以上内容,我将不胜感激。因为这对我来说是违反直觉的。

谢谢

最佳答案

您所做的只是在myFunction 中定义一个函数,创建一个闭包...

要补救实现,使 getMyVar 成为实例成员:

function myFunction() {
    var myVar = "I think I am encapsulated";

    this.getMyVar = function () {
        return myVar;
    }
}

关于javascript - 为什么这个内部函数返回未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9829639/

相关文章:

javascript - 无法在 jQuery Mobile 中更改样式

javascript - 如何在 JavaScript 中对数组进行 switch() ?

javascript - 如何防止 IFRAME 重定向顶级窗口

javascript - 带有 ES6 的 webcomponents-lite 在 IE 11 和 10 中不起作用

javascript - 遇到 if/else 语句的问题

javascript - 如何使用 calc() CSS 计算中间 div(3 div) 的高度

java - java中是否有任何函数可以在索引 i 和索引 j (两者都包含)之间的数组中执行循环左移

function - Java函数链

javascript - 在秒表上按 "stop"后如何停止时间运行

c++ - 一次发布多个数据