gpt4 book ai didi

javascript - 在自执行匿名函数中使用 undefined

转载 作者:行者123 更新时间:2023-11-28 20:58:18 24 4
gpt4 key购买 nike

我正在尝试使用 CoffeeScript 中的自执行匿名函数来实现命名空间:

How do I declare a namespace in JavaScript?

http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-1/

我还想保护“未定义”不被重新定义,因为这是文章所建议的。

所以在 CoffeeScript 中,我可以做类似的事情:

((skillet, $) ->
skillet.fry ->
alert('hi');
)( window.skillet = window.skillet || {}, jQuery);

并接近文章中描述的格式:

(function(skillet, $) {
return skillet.fry(function() {
return alert('hi');
});
})(window.skillet = window.skillet || {}, jQuery);

但是当我尝试添加未定义的内容时...由于严格模式,出现编译错误:

http://arcturo.github.com/library/coffeescript/07_the_bad_parts.html

“某些变量(例如未定义)不再可写”

我想知道是否有解决办法?我想保持严格模式,因为使用它可能有我不完全意识到的好处。但即使谷歌搜索关闭它的方法......我也想出了零。

感谢您的浏览!

最佳答案

将 CoffeeScript 代码包装在自动执行的匿名代码中是没有意义的 - 编译器默认已经这样做了。

alert "Foo"

编译成

(function() {
alert("Foo");
}).call(this);

如果您想确保例如$引用jQuery,只需添加一个局部变量:

$ = window.jQuery
skilett = window.skilett ? {}
# ... rest of the code ...

在使用严格模式时尝试保护 undefined 也是没有意义的,因为(如错误消息所述)undefined 无论如何都是不可写的。

当处于“常规”模式时,您可以在代码顶部生成一个值为 undefined 的变量,如下所示(只需使用它而不是“undefined”):

undef = ((u) -> u)()

关于javascript - 在自执行匿名函数中使用 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11659489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com