我有一个以这样的方式开始的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中所见而言。