我有一个以这样的方式开始的durandal(基本上是requirejs)模块:

define(['plugins/http', 'durandal/app', 'knockout', 'plugins/ajax', 'plugins/formatters', 'durandal/global'],
function (http, app, ko, ajax, formatters, global) {


//formatters is defined here
        var ctor = function () {

//formatters is not defined here


我在调试器中放置了一个断点,发现格式化程序是在函数外部定义的,但不是在函数内部定义的...

这是requirejs模块所独有的吗?通常,除非被覆盖,否则仍可以在内部函数中访问在函数外部声明的变量。这似乎是某种范围问题,但是我不明白我在这里缺少什么-内部函数在外部范围的范围内,那是什么问题呢?

谢谢!

最佳答案

您的问题很可能不是该变量本身不可用。添加一行
console.log(formatters)函数中的ctor

这将导致闭包包含formatters变量,从而使其对调试器可见。闭包仅在使用变量时才包含-至少就我在Chrome和FF中所见而言。

10-01 04:41