javascript setTimeout和google闭包编译器
我有几个setTimeout语句,在通过闭包编译器运行代码后,它们似乎不起作用。 我有三种陈述: 1) 调用函数:javascript setTimeout和google闭包编译器,javascript,google-closure-compiler,Javascript,Google Closure Compiler,我有几个setTimeout语句,在通过闭包编译器运行代码后,它们似乎不起作用。 我有三种陈述: 1) 调用函数: setTimeout("MyFunctionName()", 3000); 2) jQuery 3) 全局变量设置 setTimeout("MyGlobalVar = 2;", 2000); 优化此类代码的最佳方法是什么 谢谢您的建议。闭包编译器重命名您的函数和变量,这就是代码中断的原因。作为一种解决方案,使用如下匿名函数,因此这些调用也会被重命名 (一) 或者(如jfrien
setTimeout("MyFunctionName()", 3000);
2) jQuery
3) 全局变量设置
setTimeout("MyGlobalVar = 2;", 2000);
优化此类代码的最佳方法是什么
谢谢您的建议。闭包编译器重命名您的函数和变量,这就是代码中断的原因。作为一种解决方案,使用如下匿名函数,因此这些调用也会被重命名 (一) 或者(如jfriend00所述),只要函数没有参数:
setTimeout( MyFunctionName, 3000);
(二)
(三)
至于(2),我不确定这是否是代码中断的唯一原因。闭包编译器重命名函数和变量,这就是代码中断的原因。作为一种解决方案,使用如下匿名函数,因此这些调用也会被重命名 (一) 或者(如jfriend00所述),只要函数没有参数:
setTimeout( MyFunctionName, 3000);
(二)
(三)
至于(2),我不确定这是否是代码中断的唯一原因。真正的问题是,您将代码作为字符串传递给
setTimeout
,您应该永远不要这样做,因为它在功能上等同于使用eval
,包括闭包编译器无法“看到”隐藏在字符串中的代码这一事实。真正的问题是,您将代码作为字符串传递给
setTimeout
,您应该永远不要这样做,因为它在功能上等同于使用eval
,包括闭包编译器无法“看到”隐藏在字符串中的代码这一事实。第一项可以是:
setTimeout(MyFunctionName,3000)代码>。在这种情况下不需要匿名函数。只需保留它,以涵盖更一般的情况,即存在参数时。在情况2中,有时我使用布尔值作为参数。我就这样吧?@frenchie如果你使用匿名函数,你就在保存端。第一项可以是:setTimeout(MyFunctionName,3000)代码>。在这种情况下不需要匿名函数。只需保留它,以涵盖更一般的情况,即存在参数时。在情况2中,有时我使用布尔值作为参数。“我就这样吧?”@frenchie如果你使用匿名功能,你无论如何都是站在拯救的一边。
setTimeout( MyFunctionName, 3000);
setTimeout( function() { $('#MyDiv').find('.MyClass').addClass('TheNewClass'); }, 1000);
setTimeout( function(){ MyGlobalVar = 2; }, 2000);