addEventListener绑定带参函数

因为以前一直使用的jquery,然后刚刚在使用原生dom绑定带参的时候出现了一些问题。

初始代码片段

<button class="addEvent">绑定事件button>

<script>
    const addEvent = document.querySelector('.addEvent')
    addEvent.addEventListener('click',log('绑定事件'))
    function log(msg){
        console.log(msg)
    }
script>

问题:1、log()初始自执行了;2、button没绑定上这个点击事

后来找资料才找到原因:addEventListener第二个参数接收的是个function,在触发时执行的。你一定要把某个参数传到这个function里的话,用闭包返回一个function

正确写法

function log(msg){
    return function(e){
       console.log(msg)
       //to do
    }
}

你可能感兴趣的:(大前端-javascript)