1

不太确定如何问这个问题,但我只是在寻找一些见解/信息。

如果我在我的应用程序中包含多个 JavaScript 文件,页面/应用程序如何查看所有 JS 代码。是否所有文件中的所有JS都变成一个大JS文件

如果一个 JS 文件有一个变量foo=true; ,而另一个 JS 文件有foo=false,那么范围是foo什么?它是它所在的脚本的本地文件还是在“所有”js代码中都可以看到?

感谢您的任何见解。

4

3 回答 3

2

是的,在大多数情况下,这就像只有一个文件,通过按导入顺序连接所有文件来构建。

区别:

  • "use strict";(假设它存在)仅对每个文件有效
  • 浏览器获取 10 个小文件比获取大文件要慢得多,这就是为什么构建大型应用程序的 js 开发人员通常连接(并且经常缩小)所有文件以用于生产
于 2013-03-13T14:22:03.303 回答
0

如果您在一个文件中定义,而不使用var

foo = true;

它将是一个全局变量,并且它可以被您的第二个 JS 文件访问foo = false

如果在页面上明确定义了所有脚本,它们将共享相同的全局命名空间。要为变量创建本地范围,您必须将其包装在function.

请参阅此问题中提供的解释:JavaScript 中变量的范围是什么?

为了轻松处理多个 JavaScript 文件并保持全局范围最小,同时允许不同的脚本共享信息,我建议您尝试 RequireJS ( http://requirejs.org/ ),它是一个 JavaScript 文件和模块加载器。它将处理您可能拥有的任何文件依赖项,并将异步加载它们。它还将使您可以轻松地在不同的模块/文件之间传递变量,而不必将它们暴露在全局范围内。

还有其他文件/模块加载器。见: http: //www.netmagazine.com/features/essential-javascript-top-five-script-loaders

于 2013-03-13T14:30:44.077 回答
0

脚本共享的唯一内容是全局范围;单独的部分不会成为一个大文件。

例如,您不能这样做:

<script type="text/javascript">
function hello() {
</script>
<script type="text/javascript">
}
</script>

并且'use strict'一体<script>式不会对所有这些应用严格模式。

于 2013-03-13T14:23:50.417 回答