是否有必要指定参数" e"在功能?

时间:2014-01-01 19:44:33

标签: javascript jquery parameters

jquery中有许多函数使用参数e来访问某些内容或执行某些操作,例如阻止超链接使用e.preventDefault()进行操作我们是否有必要定义或者在函数的参数中指定e

例如

$(document).ready(function () {
    $("a").click(function () {
        e.preventDefault();
    });
});

即使我没有指定参数e的变量。

,这也有效

所以我的问题是,如果我们指定参数e,它会有什么不同吗?

3 个答案:

答案 0 :(得分:6)

如果您想要访问属性或方法,您只需要(实际上必须)指定e(或evevent,或任何您想要调用它的方法)它

这不是总是的情况 - 旧的IE版本有一个全局window.event变量,MS使用而不是传递参数,因此为什么有时会看到本机JS代码被写入像这样应对任何一种模式:

function handler(event) {
    event = event || window.event;
    ...
}

JavaScript会忽略函数形式参数列表中不存在的传递参数,尽管它们仍然可以通过arguments伪数组获得。

同样,任何不具有调用者提供的值的正式参数的值都为undefined

答案 1 :(得分:0)

是的,确实如此。

e是事件对象。如果您有这样的元素:

<a href="/somewhere.html">Click me</a>

然后你的javascript将执行,然后事件将冒出来,页面将会改变。如果您不包含href属性,则点击事件仍然“正在发生”,但该链接无论如何都不会发生。

取消事件会停止重定向(或提交,如果您正在谈论表单等)。

如果您退出参数,则仍可在arguments变量中访问事件对象,因此如有必要,您仍可以稍后在函数中恢复它。

答案 2 :(得分:0)

变量e不是一成不变的。这是一些开发人员为事件对象命名的内容,它是根据jQuery docs传递给事件处理程序的第一个参数。你可以根据自己的喜好来命名。

您可能会遇到一些调用名为e的对象上的方法的代码,但它可能不是事件对象。检查您给予处理程序的调用,以便确定对它的期望。