【问题标题】:What does the param mean in SAEF?SAEF 中的参数是什么意思?
【发布时间】:2012-07-07 03:20:27
【问题描述】:

我是 javascript 的新手。我曾经读过 SAEF 的文章,但我仍有疑问,代码如下:

var addEvent = (function(window, document) {
    如果(文档.addEventListener){
        返回函数(元素,类型,回调){
            //如果 elem 存在并且是单个节点。
            if ( elem && !elem.length || elem === window ) {
                elem.addEventListener(类型,回调,假);
            } else if ( elem && elem.length ) { //elem 是数组的一个节点
                for ( var i = 0; i 
我的问题是这个参数和文档的含义是什么?它们都是真正的参数,将替换匿名函数中包含的窗口和文档的参数吗?
    

【问题讨论】:

    标签: javascript


    【解决方案1】:

    这是一种称为即时函数的 JavaScript 模式。它采用以下形式:

     (function(param1, param2, ...) {
        /* ...  function body  ... */
     }(var1, var2));
    

    你是对的,它涉及创建一个匿名函数,然后用一组变量调用它。

    它允许开发人员创建一个没有变量泄漏的范围。 JavaScript 只有全局和函数范围。在函数体之外声明的任何变量都会自动在全局范围内。

    立即函数避免了这个问题。

    在这种情况下,与许多情况一样,立即函数将返回包含闭包内的一些内部变量的内容。这可以保护它们,但以受保护的方式提供它们的值。

    在这种情况下,您将返回一个允许调用者将事件添加到 HTML 元素的函数。您通常会看到用于创建跨浏览器方法的即时函数。对立即函数的调用将执行所有浏览器方法嗅探,然后生成适当的跨浏览器方法。这意味着只进行一次嗅探。这样可以避免您每次调用该方法时都嗅探浏览器。

    【讨论】:

    • 感谢您的回答,Dancrumb。我现在明白了。
    猜你喜欢
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2014-02-18
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多