Javascript 在自动执行匿名函数中使用未定义
我正在尝试使用CoffeeScript中的自动执行匿名函数实现名称空间: 我还想保护“未定义”不被重新定义,因为这是文章建议的 因此,在CoffeeScript中,我可以做如下操作:Javascript 在自动执行匿名函数中使用未定义,javascript,coffeescript,global-variables,undefined,strict,Javascript,Coffeescript,Global Variables,Undefined,Strict,我正在尝试使用CoffeeScript中的自动执行匿名函数实现名称空间: 我还想保护“未定义”不被重新定义,因为这是文章建议的 因此,在CoffeeScript中,我可以做如下操作: ((skillet, $) -> skillet.fry -> alert('hi'); )( window.skillet = window.skillet || {}, jQuery); 并接近文章中描述的格式: (function(skillet, $) { return s
((skillet, $) ->
skillet.fry ->
alert('hi');
)( window.skillet = window.skillet || {}, jQuery);
并接近文章中描述的格式:
(function(skillet, $) {
return skillet.fry(function() {
return alert('hi');
});
})(window.skillet = window.skillet || {}, jQuery);
但是,当我尝试在…中添加未定义的时,由于严格模式,出现了编译错误:
“某些变量(如未定义的变量)不再可写”
我想知道是否有解决这个问题的办法?我想保持严格模式,因为使用它可能有一些好处,但我还没有完全意识到。但即使在谷歌上搜索关闭它的方法……我还是得到了零
谢谢你的关注
我还想保护“未定义”不被重新定义
及
由于严格模式出现编译错误:“某些变量(如未定义的变量)不再可写”
那你有什么问题?无需声明未定义的参数,因为CoffeeScript无论如何都不允许您使用此“变量”
如果您真的(需要/想要)担心某个第三方脚本为未定义的赋值,请不要在代码中使用它。您可以始终使用typeof
运算符或CoffeeScripts存在运算符
别担心。我认为除了明显的恶意攻击之外,没有人遇到过这样的错误
我还想保护“未定义”不被重新定义
及
由于严格模式出现编译错误:“某些变量(如未定义的变量)不再可写”
那你有什么问题?无需声明未定义的参数,因为CoffeeScript无论如何都不允许您使用此“变量”
如果您真的(需要/想要)担心某个第三方脚本为未定义的赋值,请不要在代码中使用它。您可以始终使用typeof
运算符或CoffeeScripts存在运算符
别担心。我认为,除了明确的恶意攻击之外,没有人遇到过这样的错误。将CoffeeScript代码包装在自动执行的匿名文件中没有任何意义——默认情况下,编译器已经完成了这项工作
alert "Foo"
汇编成
(function() {
alert("Foo");
}).call(this);
如果要确保例如$
引用jQuery
,只需添加一个局部变量:
$ = window.jQuery
skilett = window.skilett ? {}
# ... rest of the code ...
在使用严格模式时,尝试保护未定义的
也没有意义,因为(正如错误消息所述)未定义的
无论如何都是不可写的
在“常规”模式下,您可以在代码顶部生成一个值为undefined
的变量,如下所示(只需使用此变量而不是“undefined”):
将CoffeeScript代码包装在自动执行的匿名文件中是没有意义的——默认情况下,编译器已经完成了这项工作
alert "Foo"
汇编成
(function() {
alert("Foo");
}).call(this);
如果要确保例如$
引用jQuery
,只需添加一个局部变量:
$ = window.jQuery
skilett = window.skilett ? {}
# ... rest of the code ...
在使用严格模式时,尝试保护未定义的
也没有意义,因为(正如错误消息所述)未定义的
无论如何都是不可写的
在“常规”模式下,您可以在代码顶部生成一个值为undefined
的变量,如下所示(只需使用此变量而不是“undefined”):
一般来说,我从来没有遇到过重新定义未定义的问题-任何这样做的代码都不足以使用,通过使用严格模式,您可以确保自己的代码也不会受到影响。我不会担心的!一般来说,我从来没有遇到过重新定义未定义的问题-任何这样做的代码都不足以使用,通过使用严格模式,您可以确保自己的代码也不会受到影响。我不会担心的!