Google closure compiler 我应该使用什么语法为闭包编译器声明外部?

Google closure compiler 我应该使用什么语法为闭包编译器声明外部?,google-closure-compiler,Google Closure Compiler,我想为闭包编译器声明一些外部程序,但不知道怎么做 (function(window) { window.myapi = window.myapi || {}; var myapi = window.myapi; myapi.hello = function() { window.document.write('Hello'); } }(window)); 我不知道如何为window.myapi、window.myapi.hello执行此操作?外部程序是有效的javascript,但它们

我想为闭包编译器声明一些外部程序,但不知道怎么做

(function(window) {
window.myapi = window.myapi || {};

var myapi = window.myapi;

myapi.hello = function() {
  window.document.write('Hello');
}
}(window));

我不知道如何为window.myapi、window.myapi.hello执行此操作?

外部程序是有效的javascript,但它们只是类型信息。它们不应包含定义(或仅用于函数的空定义)

这是一个开始:

关于您的具体示例,请注意以下几点:

  • 不要使用匿名包装器。类型名称必须是全局的
  • 窗口对象的属性与命名空间示例相同
  • 函数不应该有实现
  • 下面是一个更正的示例:

    /** @const */
    window.myapi = {};
    
    /** @return {undefined} */
    window.myapi.hello = function() {};
    
    在闭包中,
    窗口
    (全局)对象上的编译器属性与全局变量完全不同。如果你两者都需要,你必须申报两次

    /** @const */
    var myapi = {};
    
    /** @return {undefined} */
    myapi.hello = function() {};
    

    外部代码是有效的javascript,但它们只是类型信息。它们不应包含定义(或仅用于函数的空定义)

    这是一个开始:

    关于您的具体示例,请注意以下几点:

  • 不要使用匿名包装器。类型名称必须是全局的
  • 窗口对象的属性与命名空间示例相同
  • 函数不应该有实现
  • 下面是一个更正的示例:

    /** @const */
    window.myapi = {};
    
    /** @return {undefined} */
    window.myapi.hello = function() {};
    
    在闭包中,
    窗口
    (全局)对象上的编译器属性与全局变量完全不同。如果你两者都需要,你必须申报两次

    /** @const */
    var myapi = {};
    
    /** @return {undefined} */
    myapi.hello = function() {};
    

    外部代码是有效的javascript,但它们只是类型信息。它们不应包含定义(或仅用于函数的空定义)

    这是一个开始:

    关于您的具体示例,请注意以下几点:

  • 不要使用匿名包装器。类型名称必须是全局的
  • 窗口对象的属性与命名空间示例相同
  • 函数不应该有实现
  • 下面是一个更正的示例:

    /** @const */
    window.myapi = {};
    
    /** @return {undefined} */
    window.myapi.hello = function() {};
    
    在闭包中,
    窗口
    (全局)对象上的编译器属性与全局变量完全不同。如果你两者都需要,你必须申报两次

    /** @const */
    var myapi = {};
    
    /** @return {undefined} */
    myapi.hello = function() {};
    

    外部代码是有效的javascript,但它们只是类型信息。它们不应包含定义(或仅用于函数的空定义)

    这是一个开始:

    关于您的具体示例,请注意以下几点:

  • 不要使用匿名包装器。类型名称必须是全局的
  • 窗口对象的属性与命名空间示例相同
  • 函数不应该有实现
  • 下面是一个更正的示例:

    /** @const */
    window.myapi = {};
    
    /** @return {undefined} */
    window.myapi.hello = function() {};
    
    在闭包中,
    窗口
    (全局)对象上的编译器属性与全局变量完全不同。如果你两者都需要,你必须申报两次

    /** @const */
    var myapi = {};
    
    /** @return {undefined} */
    myapi.hello = function() {};
    

    我有一些问题,因为语法:var x={};不声明window.x,我需要声明window.x={};问题是我必须使用匿名包装器,因为我根本不想污染或被污染全局范围。感谢您解释我需要两次window.namespace和namespace声明。我更喜欢控制语法,所以会使用很长的语法窗口,但非常安全;不声明window.x,我需要声明window.x={};问题是我必须使用匿名包装器,因为我根本不想污染或被污染全局范围。感谢您解释我需要两次window.namespace和namespace声明。我更喜欢控制语法,所以会使用很长的语法窗口,但非常安全;不声明window.x,我需要声明window.x={};问题是我必须使用匿名包装器,因为我根本不想污染或被污染全局范围。感谢您解释我需要两次window.namespace和namespace声明。我更喜欢控制语法,所以会使用很长的语法窗口,但非常安全;不声明window.x,我需要声明window.x={};问题是我必须使用匿名包装器,因为我根本不想污染或被污染全局范围。感谢您解释我需要两次window.namespace和namespace声明。我更喜欢控制语法,所以会使用很长的语法窗口,但非常安全。