Javascript 浏览器返回错误:未定义应用程序

Javascript 浏览器返回错误:未定义应用程序,javascript,namespaces,javascript-namespaces,Javascript,Namespaces,Javascript Namespaces,我有一个应用程序在前端主干上运行,当浏览器加载页面时,它会在控制台中返回一个错误: Uncaught ReferenceError: app is not defined at index.js:6 at index.js:51 (anonymous) @ index.js:6 (anonymous) @ index.js:51 index.js 从构建切换到CDN或进入主干。模型属性返回相同的错误。如果希望变量是全局变量,则仅将其移动到函数范围之外 /* global app

我有一个应用程序在前端主干上运行,当浏览器加载页面时,它会在控制台中返回一个错误:

Uncaught ReferenceError: app is not defined
    at index.js:6
    at index.js:51
(anonymous) @ index.js:6
(anonymous) @ index.js:51
index.js
从构建切换到CDN或进入主干。模型属性返回相同的错误。

如果希望变量是全局变量,则仅将其移动到函数范围之外

/* global app:true */

var app = app || {};

(function() {
  'use strict';

  //.......
  //backbone code here
  //.......

  // you can use the jQuery shortcut version of the document ready.
  $(function() {
    app.contactView = new app.ContactView();
  });
}());
或者将其作为的参数传递

如果您有多个文件,它们都应该实现与上述示例类似的结构,以便能够使用
app
名称空间

有关名称空间的其他信息

如果希望变量是全局变量,则仅将其移动到函数范围之外

/* global app:true */

var app = app || {};

(function() {
  'use strict';

  //.......
  //backbone code here
  //.......

  // you can use the jQuery shortcut version of the document ready.
  $(function() {
    app.contactView = new app.ContactView();
  });
}());
或者将其作为的参数传递

如果您有多个文件,它们都应该实现与上述示例类似的结构,以便能够使用
app
名称空间

有关名称空间的其他信息

否,这两个选项返回相同的错误。我还有一些类似结构的文件,也许我应该更改它们,因为否则它不会是全局的?@ASem每个文件都应该有
var-app=app | |{}顶部的行。全部更改,这很有帮助,谢谢!据我所知,您的第一个选项使全局应用程序对象可访问,但其属性在函数范围内,这样离开是安全的。@ASem事实上,
app
中的所有内容都是全局可访问的,因为
app
是全局的。函数作用域允许您定义不会泄漏到全局空间的局部变量。这对于组件的私有部分、模拟类的静态字段等非常有用。不,这两个选项返回了相同的错误。我还有一些类似结构的文件,也许我应该更改它们,因为否则它不会是全局的?@ASem每个文件都应该有
var-app=app | |{}顶部的行。全部更改,这很有帮助,谢谢!据我所知,您的第一个选项使全局应用程序对象可访问,但其属性在函数范围内,这样离开是安全的。@ASem事实上,
app
中的所有内容都是全局可访问的,因为
app
是全局的。函数作用域允许您定义不会泄漏到全局空间的局部变量。这对于组件的私有部分、模拟类的静态字段等非常有用。
(function(app) {
  // ...
})(app = app || {});