【问题标题】:Why does jQuery's animation extension "jQuery Color" 's closure function take an undefined value as it's second parameter? [duplicate]为什么 jQuery 的动画扩展 "jQuery Color" 的闭包函数将一个未定义的值作为它的第二个参数? [复制]
【发布时间】:2012-10-26 17:32:19
【问题描述】:

可能重复:
JavaScript function with ‘undefined’ parameter

我在这里查看 jQuery Color 源代码

http://code.jquery.com/color/jquery.color-2.1.0.js

我发现闭包函数的第二个参数是一个未定义的值。 见下文:

(function( jQuery, undefined ) {

    var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",

    // plusequals test for += 100 -= 100
    rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
    // a set of RE's that can match strings and generate color tuples.

或者你可以在源代码中看到它。看第二个参数。

我想知道的是为什么第二个参数是未定义的?

我认为这是一种严格设置函数只接收一个参数的方法。

我说得对吗?或者谁能​​帮帮我?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    这是为了防止代码的其他部分为undefined 名称分配一些值。闭包实际上只用一个参数调用,如下:

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

    这可确保 undefined 在闭包内实际绑定到 undefined

    【讨论】:

    • 因为,出于某种深不可测的原因,undefined 不是关键字。
    • 还是不明白..所以它只是与命名约定有关吗?有什么例子吗??
    • @Amitd,让我们考虑页面中的(可能是恶意的)脚本将"foo" 分配给undefined。如果没有这种解决方法,与undefined 的比较将无法正常工作(它们将成为与"foo" 的比较),并且由此产生的行为将很难理解和诊断。
    • 也就是说,“undefined”不是关键字,可以给它赋值吗?让我试试……
    • @Xieranmaya,您必须使用符合 ECMA 规范第 5 版的最新浏览器。并非所有浏览器都这样做。
    猜你喜欢
    • 2013-05-20
    • 2023-04-03
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 2020-09-29
    • 2023-03-23
    相关资源
    最近更新 更多