在js中使用自调用函数的问题

use*_*256 0 javascript

<script>
var person = function () {
    // Private
    var name = "David";
    return {
        getName : function () {
            return name;
        },
        setName : function (newName) {
            name = newName;
        }
    };
}();
console.log(person.name);  
</script>
Run Code Online (Sandbox Code Playgroud)

题:

为什么它显示:在控制台中未定义?

Aru*_*hny 6

你需要使用

console.log(person.getName());  
Run Code Online (Sandbox Code Playgroud)

因为name是一个闭包变量,不能在匿名函数的范围之外访问.

可变person持有这是与属性的对象的iife返回的值getNamesetName,所以这些都是可以从访问的唯一属性person参考.

演示:小提琴