javascript - 将变量注入(inject)函数的范围

标签 javascript node.js

所以,我想做这样的事情:

    var a = 'a';

    var dummy = function() {

        // Print out var 'a', from the scope above
        console.log('Dummy a: ' + a);

        // Print out 'b', from the 'compelled' scope
        console.log('Dummy b: ' + b);
    }

    (function() {

        var b = 'otherscope';

        // I know apply won't work, I also don't want to merge scopes
        dummy.apply(this);

        // I want something like this:
        dummy.compel(this, [], {b: 'injected!'});

    })();

但这行不通。

我实际上并不希望一个函数能够达到 2 个作用域,我确实希望能够从外部设置虚拟函数内部使用的“b”变量。

最佳答案

您可以使b 成为函数的参数或全局变量。

var a = 'a';
var dummy = function(b) {
   ...
}

var a = 'a';
var b;
var dummy = function() {
   ...
}

第一个允许您选择虚拟函数何时访问变量,第二个允许它在任何地方访问。

关于javascript - 将变量注入(inject)函数的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15556186/

相关文章:

node.js - 如何查看FCM消息状态?

javascript - React-Native 上的 this.on 事件发射器不是一个函数

javascript - 清除超时()不起作用

javascript - jquery 从给定选择器中选择元素

javascript - 如何让模数运算符在 JavaScript 中的两个数字之间添加奇数?

javascript - 在此受限设置中,eval() 会导致安全问题吗?

javascript - lambda函数如何访问外部数组

javascript - column 是没有时区的 timestamp 类型,但 expression 是 integer 类型

javascript - 在 Node.js 中响应 JSON 对象(将对象/数组转换为 JSON 字符串)

json - 自定义本地 npm 模块作为依赖项