SAEF 中的参数是什么意思

What does the param mean in SAEF?

本文关键字:是什么 意思 参数 SAEF      更新时间:2023-09-26

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

var addEvent = (function( window, document ) {    if ( document.addEventListener ) {        返回函数 ( elem, type, 回调 ) {            如果 elem 存在并且是单个节点。            if ( elem && !elem.length || elem === window ) {                elem.addEventListener( type, callback, false );            } else if ( elem && elem.length ) {//elem is a node of array                for ( var i = 0; i <elem.length;><elem.length;>
我的问题是这个参数和文档意味着什么?它们都是将替换匿名函数中包含的窗口和文档参数的真正参数吗?

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

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

您是正确的,它涉及创建匿名函数,然后使用一组变量调用它。

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

即时函数可避免该问题。

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

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