脚本错误:变量未定义

时间:2014-05-14 17:13:13

标签: javascript variables undefined scope

我有一个javascript文件,声明下面的变量:

var page = page || {};

上述文件包含在另一个想要使用页面变量的javascript文件中。在尝试输入时,我可以在intellisense中看到该变量。

但是在运行时,我收到的错误是:

页面未定义。

我发布了更详细的代码:

第一个文件是只有一行的page.js

var page = page || {};

第二个文件使用上述变量:

/// <reference path="page.js" />

page.current = function () {
};

有最后的第三个文件:

/// <reference path="../pagescripts/page-current.js" />
define(function () {

var Agencies = function (app, datacontext, logger, config, router) {
     var myPage = page.current;
     //The above line throws error saying page is not defined.
});
};

3 个答案:

答案 0 :(得分:2)

在跨多个文件使用相同的命名空间对象时,通常会使用此模式。通过

var page = page || {}; 

在每个文件的顶部触及该命名空间,您可以保证page将指向同一个对象,并且您可以按任意顺序加载它们,如果您的代码许可证。

// page1.js
var page = page || {};
page.doSomething = function() {};

// page2.js
var page = page || {}
page.doSomethingElse = function() {};

// page3.js
var page = page || {};
page.doThirdThing = function() {};

答案 1 :(得分:1)

确保在使用它的文件/脚本标记之前加载定义变量的javascript文件。

答案 2 :(得分:-3)

如果由于某种原因无法更改脚本文件加载的顺序,则可以使用dom onready函数来访问此变量。根据经验,你应该延迟逻辑的执行,直到dom准备好。例如在jQuery中你可以使用

$(document).ready(function() {
// application init logic
// or start execution of functions
  if(page && page.whatever) {
      page.whatever();
  }
})