JavaScript中的C extern声明的等价物

时间:2014-08-06 02:27:35

标签: javascript c

编写一些JS,并希望具体列举我从JS脚本主体中的其他文件导入的内容。是否有相当于C的extern JS声明?

谢谢!

3 个答案:

答案 0 :(得分:1)

在函数范围之外声明的变量在JavaScript中是全局的。例如,如果你有两个JS文件并声明一个变量' myObject'在第一个文件中,它将在第二个文件的范围内,并在第一个文件已加载到浏览器中时声明使用。

如果您需要访问JS文件之间的对象,那么将一个对象公开给全局命名空间并在该对象上声明字段和方法是一种很好的做法。

文件1:

var myObject;
myObject.myField = "Field!";    

文件2:

myObject.prototype.myFunction = function () {
    return this.myField;
};

希望这有帮助,很高兴听到其他建议并接受更正:D

答案 1 :(得分:1)

在JavaScript中没有等效于C extern声明,因为JavaScript在使用C之前不需要声明变量。

如果您的JavaScript代码依赖于window对象上定义的某些属性,则只需在文件顶部附近的注释中记录这些属性。

答案 2 :(得分:0)

可悲的是,Javascript没有用于控制导入内容的内置功能。<​​/ p>

默认情况下,页面中加载的所有脚本都会将其全局变量写入同一共享全局范围。解决这个问题的唯一方法是编写脚本,以便使用module pattern创建尽可能少的全局变量。

或者,您可以使用人们提出的模块系统扩展之一。例如,您可以使用CommonJS模块系统编写脚本,这样可以使脚本中的顶级var声明从其他脚本中看不到,并允许您显式导出您喜欢的值。像nodejs这样的运行时可以本地运行CommonJS模块,对于那些不像浏览器那样的运行时,你可以使用像browserify这样的工具将commonjs模块编译成一个文件,该文件可以放入脚本标签中并且仍然可以正常运行的事情。