如何在JavaScript中使用自己的指针创建一个独特的函数?

时间:2016-07-01 22:43:45

标签: javascript

每次调用getFunction都会返回一个唯一的函数,对吗?

var getFunction = function() {
    var myFunction = function() {
    };
    return myFunction;
}

var function1 = getFunction();
var function2 = getFunction();

function1 === function2; // false

2 个答案:

答案 0 :(得分:3)

是的,每次调用一个函数时,都会为该运行创建一个新的作用域,并且其中定义的所有变量都是唯一的,并且不会在函数的运行之间共享。

即使执行类似下面的操作也会产生相同的结果,因为内部函数仍然在函数范围内定义,并且可以看到外部函数的参数。

var getFunction = function() {
    function myFunction() {
    };
    return myFunction;
}

var function1 = getFunction();
var function2 = getFunction();

function1 === function2; // false

答案 1 :(得分:1)

这可以如下可视化。外部作用域包含三个变量分配,getFunction调用将创建两个新作用域,这些作用域返回在该作用域中定义的函数对象。

visualization of scope