requirejs:为什么模块中定义的函数无法访问require()中的局部变量,我该如何实现?

arctelix

这是我对requirejs的首次尝试,我认为我对此有一个很好的处理,但以下情况除外:为什么模块中定义的函数无法访问require()内的局部变量,我该如何实现?

如果我们能专注于问题,而不是我使用eval(),更好或替代的方法来定义test()或以下代码中可能存在的错字的事实,将不胜感激

在全局名称空间中给出以下代码:

require(["test"], function(testModule) {
    var test1 = testModule.test1;// same as local test()
    var test2 = testModule.test2; // modified to work as module

    //local function same as testModule.test1
    function test (name, test){
        return test+'='+eval(name+test);
    }

    //define class & instance for testing
    var MyClass1 = function (name) {
        this.name = name;
    };
    var mc1 = new MyClass1('instance 1');
    var objName = 'mc1'

    test(objName, '.name');   // works as expected
    test1(objName, '.name');  // error: mc1 is not defined
    test1.call(this, objName, '.name');  // error: mc1 is not defined
    test2(mc1, objName+'.name');  // works as expected

})

和测试模块定义:

define({
    test1: function (name, test){
        return test+'='+eval(name+test);
    },

    test2: function (obj, test){
        var parts = test.split('.');
        parts[0] = 'obj';
        test = parts.join('.');
        return test+'='+eval(test);
    }
});

问题:

部分a)当我调用test1(objName,'.name')时,为什么看不到定义为var mc1 = new MyClass1('instance 1')的局部变量?

我知道这是出于良好的原因,与保持全局名称空间整洁有关,我只是不了解它如何看不到它。define()的this指向与require()的this相同的名称空间。

b)如果我想让测试模块访问var mc1,我该怎么做?

亚历克斯

当我调用test1(objName,'.name')时,为什么看不到定义为var mc1 = new MyClass1('instance 1')的局部变量?

它们在不同的功能中定义。这是行不通的相同原因:

function a() {
   var hello = 'world'
   b()
}

function b() {
   alert(hello)
}

如果我想让测试模块访问var mc1,我该怎么做?

将定义更改为:

test1: function (name, test, mc1){ ... }

并显式传递mc1变量:

test1(objName, '.name', mc1)

这与require.js无关,这就是javascript的工作方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么函数无法访问外部声明的对象中的局部变量

来自分类Dev

为什么即使稍后在代码中定义了局部变量,全局变量也无法访问

来自分类Dev

我无法访问函数外的局部变量

来自分类Dev

为什么即使使用 setlocal enabledelayedexpansion 也无法访问 for 循环(批处理文件)中的局部变量?

来自分类Dev

生成器函数中是否无法访问局部变量?

来自分类Dev

为什么在函数中无法访问我的全局变量?

来自分类Dev

为什么不能在ngAfterViewInit函数中访问局部变量?

来自分类Dev

为什么我的函数局部变量之间在堆栈中没有存储空间?

来自分类Dev

无法在for,php中访问局部变量

来自分类Dev

在python中访问另一个模块中模块的函数的局部变量

来自分类Dev

为什么/如何确定函数何时覆盖Julia中的局部变量?

来自分类Dev

为什么在函数之后无法访问我的变量?

来自分类Dev

在类构造函数中,为什么“这是必需的”?为什么我不能使用局部变量?

来自分类Dev

为什么在类中定义的变量不是局部变量而是Java中的实例变量?

来自分类Dev

为什么我无法在jquery函数中访问变量

来自分类Dev

为什么无法访问模块中的此公共功能

来自分类Dev

如何从C / C ++访问lua脚本中的局部变量或调用局部函数?

来自分类Dev

如何访问局部变量(函数内部的变量)和头文件中的变量的ICElement?

来自分类Dev

为什么局部变量不会在数组定义中隐藏全局变量

来自分类Java

从方法局部内部类访问局部变量,在该方法中我们声明内部类

来自分类Dev

初始化,添加,保存函数中的局部变量,然后使用该函数访问该变量

来自分类Dev

为什么在此函数中全局变量与局部变量不同?

来自分类Dev

为什么Dolphindb脚本中的函数无法访问外部作用域中的变量

来自分类Dev

为什么此javascript函数无法访问同一类中的变量?

来自分类Dev

为什么在角组件中无法访问范围变量

来自分类Dev

为什么我在 Nodejs 中运行快速实例后无法访问 `userService` 变量

来自分类Dev

为什么我无法访问通过 Ansible 中的文件加载的变量?

来自分类Dev

为什么我在.then()承诺中无法访问this.state变量?

来自分类Dev

为什么我无法访问 JSON 对象字典中的变量?

Related 相关文章

  1. 1

    为什么函数无法访问外部声明的对象中的局部变量

  2. 2

    为什么即使稍后在代码中定义了局部变量,全局变量也无法访问

  3. 3

    我无法访问函数外的局部变量

  4. 4

    为什么即使使用 setlocal enabledelayedexpansion 也无法访问 for 循环(批处理文件)中的局部变量?

  5. 5

    生成器函数中是否无法访问局部变量?

  6. 6

    为什么在函数中无法访问我的全局变量?

  7. 7

    为什么不能在ngAfterViewInit函数中访问局部变量?

  8. 8

    为什么我的函数局部变量之间在堆栈中没有存储空间?

  9. 9

    无法在for,php中访问局部变量

  10. 10

    在python中访问另一个模块中模块的函数的局部变量

  11. 11

    为什么/如何确定函数何时覆盖Julia中的局部变量?

  12. 12

    为什么在函数之后无法访问我的变量?

  13. 13

    在类构造函数中,为什么“这是必需的”?为什么我不能使用局部变量?

  14. 14

    为什么在类中定义的变量不是局部变量而是Java中的实例变量?

  15. 15

    为什么我无法在jquery函数中访问变量

  16. 16

    为什么无法访问模块中的此公共功能

  17. 17

    如何从C / C ++访问lua脚本中的局部变量或调用局部函数?

  18. 18

    如何访问局部变量(函数内部的变量)和头文件中的变量的ICElement?

  19. 19

    为什么局部变量不会在数组定义中隐藏全局变量

  20. 20

    从方法局部内部类访问局部变量,在该方法中我们声明内部类

  21. 21

    初始化,添加,保存函数中的局部变量,然后使用该函数访问该变量

  22. 22

    为什么在此函数中全局变量与局部变量不同?

  23. 23

    为什么Dolphindb脚本中的函数无法访问外部作用域中的变量

  24. 24

    为什么此javascript函数无法访问同一类中的变量?

  25. 25

    为什么在角组件中无法访问范围变量

  26. 26

    为什么我在 Nodejs 中运行快速实例后无法访问 `userService` 变量

  27. 27

    为什么我无法访问通过 Ansible 中的文件加载的变量?

  28. 28

    为什么我在.then()承诺中无法访问this.state变量?

  29. 29

    为什么我无法访问 JSON 对象字典中的变量?

热门标签

归档