Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我们要用“等”这样的字母;";在e.preventDefault()中?(我想我的答案比其他帖子更详细)_Javascript - Fatal编程技术网

Javascript 为什么我们要用“等”这样的字母;";在e.preventDefault()中?(我想我的答案比其他帖子更详细)

Javascript 为什么我们要用“等”这样的字母;";在e.preventDefault()中?(我想我的答案比其他帖子更详细),javascript,Javascript,首先,让我们看看addEventListener的语法 通常是: target.addEventListener(type,listener[,useCapture]) addEventlistener的参数定义为: 类型:表示要侦听的事件类型的字符串 侦听器:当发生指定类型的事件时,接收通知的对象(实现事件接口的对象) 发生。这必须是实现EventListener的对象 接口或JavaScript函数 (来自MDN) 但我认为有一点应该注意: 当您使用Javascript函数作为侦听器时,实现

首先,让我们看看addEventListener的语法

通常是: target.addEventListener(type,listener[,useCapture])

addEventlistener的参数定义为:

类型:表示要侦听的事件类型的字符串

侦听器:当发生指定类型的事件时,接收通知的对象(实现事件接口的对象) 发生。这必须是实现EventListener的对象 接口或JavaScript函数

(来自MDN)

但我认为有一点应该注意: 当您使用Javascript函数作为侦听器时,实现事件接口的对象(对象事件)将自动分配给函数的“第一个参数”。因此,如果您使用函数(e),对象将分配给“e”,因为“e”是函数的唯一参数(定义为第一个!),然后您可以使用e.preventDefault来阻止某些事情

让我们尝试以下示例:

<p>Please click on the checkbox control.</p>
<form>
    <label for="id-checkbox">Checkbox</label>
    <input type="checkbox" id="id-checkbox"/>

    </div>
</form>
<script>
    document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
         //var e=3;
         var v=5;
         var t=e+v;
         console.log(t);
        e.preventDefault();

    }, false);
</script>
请单击复选框控件

复选框 document.querySelector(“id复选框”).addEventListener(“单击”,函数(e,v){ //变量e=3; var v=5; var t=e+v; 控制台日志(t); e、 预防默认值(); },假);
结果将是:[object MouseeEvent]5,您将阻止单击事件

但如果您删除注释标志,如:

<script>
       document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
            var e=3;
            var v=5;
            var t=e+v;
            console.log(t);
            e.preventDefault();

       }, false);
   </script>

document.querySelector(“id复选框”).addEventListener(“单击”,函数(e,v){
变量e=3;
var v=5;
var t=e+v;
控制台日志(t);
e、 预防默认值();
},假);
您将得到:8和一个错误:“未捕获类型错误:e.preventDefault不是一个函数 在HTMLInputElement(VM409:69)”中

当然,这次不会阻止click事件,因为函数中再次定义了“e”

但是,如果将代码更改为:

<script>
       document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
            var e=3;
            var v=5;
            var t=e+v;
            console.log(t);
            event.preventDefault();

       }, false);
   </script>

document.querySelector(“id复选框”).addEventListener(“单击”,函数(e,v){
变量e=3;
var v=5;
var t=e+v;
控制台日志(t);
event.preventDefault();
},假);
每件事都将正常运行…您将获得8,并且单击事件将被阻止


因此,“e”只是函数的一个参数,在函数()中需要一个“e”来接收“事件对象”,然后执行e.preventDefault()。这也是您可以将“e”更改为js未保留的任何单词的原因。

约定。你想放什么就放什么


如果你想知道为什么你可以把你想要的东西放进去,那就是动态类型语言的工作原理。您不需要声明类型,因为它是在运行时而不是编译时确定的。

约定。你想放什么就放什么


如果你想知道为什么你可以把你想要的东西放进去,那就是动态类型语言的工作原理。您不需要声明类型,因为它是在运行时而不是编译时确定的。

因为速记
e
代表
事件
,由于它的简短和方便,它主要表示为
e
。(例如:
i
j
表示循环或索引,
c
表示计数器,n表示..等)


JavaScript中的一些方法(如您的示例中的
addEventListener
)公开参数/属性。第二个参数用作回调函数,它可以选择性地将
Event
对象属性公开为第一个参数
function(Event)
。事件的名称由您决定(只要它是一个有效的变量名)。无论您使用什么,都将表示返回的事件对象。

因为速记
e
代表
事件
,由于它的简洁和方便,它主要表示为
e
。(例如:
i
j
表示循环或索引,
c
表示计数器,n表示..等)


JavaScript中的一些方法(如您的示例中的
addEventListener
)公开参数/属性。第二个参数用作回调函数,它可以选择性地将
Event
对象属性公开为第一个参数
function(Event)
。事件的名称由您决定(只要它是一个有效的变量名)。无论您使用什么,都将表示返回的事件对象。

如果您编写一个伪
addEventListener
函数,并查看它的结构,可能会更容易理解

该函数接受两个参数,一个字符串
name
和一个回调函数
listener
。它将创建一个事件,并将其用作传递给它的函数中的第一个参数

var addEventListener=函数(名称、侦听器){
var事件={
姓名:姓名,,
preventDefault:function(){
警报('preventDefault将阻止您选中此复选框!')
}
};
if(typeof listener==“function”)listener(事件);
}
addEventListener('click',函数(您想要的名称){
preventDefault();

})
如果您编写一个伪
addEventListener
函数,并查看它的结构,可能会更容易理解

该函数接受两个参数,一个字符串
name
和一个回调函数
listener
。它将创建一个事件,并将其用作传递给它的函数中的第一个参数

var addEventListener=函数(名称、侦听器){
var事件={
function(**e**){
    alert("preventDefault will stop you from checking this checkbox!")
    **e**.preventDefault();
}