gpt4 book ai didi

javascript - 传入未定义的目的是什么?

转载 作者:行者123 更新时间:2023-12-01 05:32:44 25 4
gpt4 key购买 nike

我注意到 jQuery 和相关的主题插件(例如 jQuery.UI)将 undefined 作为参数传递到其模块定义中使用的匿名函数中,像这样:

(function($, undefined) { ... })(jQuery);

或者,我注意到 jQuery 推荐的其他插件和/或其他插件不会将 undefined 作为参数传递。

这可能是一个愚蠢的问题,但是......

它不是应该始终可用吗?为什么要传进去?这里是否还有其他目的或诡计?

最佳答案

有两个原因:

1) 如果undefined是函数作用域中的变量而不是全局对象属性,缩小器可以将其缩减为单个字母,从而获得更好的压缩率。

2) 在 ES5* 之前,undefined 是全局对象的一个​​属性,没有写保护。因此它可能会被覆盖,从而导致奇怪和意外的行为。你可以这样做:

var test = 123;
undefined = 123;
if (test === undefined){
// this will actually be true, since undefined now equals 123
}

通过不向其传递参数的函数参数undefined(名称实际上并不重要),您可以确保您有一个确实是undefined<的变量 这样你就可以针对这个变量测试“不确定性”。

顺便说一句。测试未定义的最安全方法是: typeof ( var ) === 'undefined'

(*) 在 EcmaScript 5 中,全局属性 undefinedNaNInfinity 变为只读。因此,随着它在所有现代浏览器中的普遍采用(当然 IE 9 除外),覆盖这些值已不再可能。

关于javascript - 传入未定义的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36099616/

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