JavaScript 变量 scope 和 requireJS 模块



我有一个像这样开始的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;

最新更新