javascript - 带有函数参数数组的闭包

标签 javascript

查看 Leaflet API 中的代码

迷失在争论和闭包中。

我的第二个参数日志输出是一个空数组。第一个日志不应相同。

limitExecByInterval: function (fn, time, context) {
    var lock, execOnUnlock;

    // Log output 1
    console.log(arguments);//[foo(), 10000, Window a.html]

    return function wrapperFn() {
        var args = arguments;

        if (lock) {
            execOnUnlock = true;
            return;
        }

        lock = true;

        setTimeout(function () {
            lock = false;

            if (execOnUnlock) {
                wrapperFn.apply(context, args);
                execOnUnlock = false;
            }
        }, time);

        //Log output 2
        console.log(args) //[]

        fn.apply(context, args);
    };
},

最佳答案

Shouldn't be the same at the first log.

没有。每个函数都有自己的arguments对象。第二个 console.log 调用将记录传递给 wrapperFn 的参数,它在您的测试中似乎没有收到任何参数。

关于javascript - 带有函数参数数组的闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27815336/

相关文章:

javascript - react native 堆栈导航 header

javascript - 正则表达式捕获字符,包括标签之间的空格

javascript - 使用 Javascript 对象为具有两个背景图像的 DIV 设置样式时遇到问题

javascript - Alexa 内置插槽类型 : No value being passed

javascript - VSCode Javascript - 获取准确的本地新 Date() 值

javascript - 使用 jQuery 模拟点击 anchor

javascript - 如何在聊天中为用户定义颜色

javascript - 搜索数组中的元素

php - 在 Ajax 返回中获取 PHP 变量?

javascript - 更改元素的背景图像