gpt4 book ai didi

javascript - 传入undefined的目的是什么?

转载 作者:IT王子 更新时间:2023-10-29 02:55:46 25 4
gpt4 key购买 nike

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

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

或者,我注意到 jQuery 和/或其他人推荐的其他插件不会将未定义作为参数传入。

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

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

最佳答案

有两个原因:

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 这样你就可以针对这个变量测试“undefinedness”。

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

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

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

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