我有一个像这样开始的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 中看到的那样。
我以前遇到过这个问题,我设法通过在函数之后定义一个变量并为其分配参数来解决它。例如: Var fmtrs=formaters;