zoukankan      html  css  js  c++  java
  • 函数调用加括号与不加括号的区别

    写在前面:最近做的一个项目用是很久之前的,在维护项目中就无法使用vue等技术来操作,所以一些方法用的是原生来写的,在绑定点击方法时,方法名没加括号,就没生效,加了括号就生效了,当时有疑惑的点是在之前做vue的项目中,我记得不加括号也是完全可以的,于是就详细的查了一下。

    原生方法调用函数

    在script里写方法,不加括号的话就相当于得到的是这个函数体,是这个函数本身,并不会执行函数

    <body>
        <div>函数调用是否要加括号</div>
        <button>点击变色</button>
        <script type="text/javascript">
          var div = document.getElementsByTagName('div')[0];
          var btn = document.getElementsByTagName('button')[0];
    
            function reset(){
                div.style.color='green'
            }
            btn.onclick = reset //1.这种情况相当于  btn.onclick = function reset(){...} ,点击之后执行这个事件。得到是函数体
            btn.onclick = reset()  //2.这种情况可以理解成给函数外面加了括号成了自执行函数,不用点击就得到了一个函数执行后面的结果
    
        </script>
    </body>
    

    当然以上两种大家都明白,不会有什么疑惑,用习惯vue中的方法调用时和再用原生遇到的疑惑的点在于在行内加方法,

       <div>函数调用是否要加括号</div>
        <button onclick="reset()">点击变色</button>
        <script type="text/javascript">
          var div = document.getElementsByTagName('div')[0];
          var btn = document.getElementsByTagName('button')[0];
    
            function reset(){
                div.style.color='green'
            }
    

    在原生的行内加方法时是要加()才能执行的 具体原因,哈哈,我想多了会把自己绕进去,欢迎你们解答

    vue方法中调用函数

    这个其实加不加括号,这个方法都会执行,加()我一般会考虑到传参的问题,

    • 不加括号,默认传递参数为 MouseEvent,
    • 加括号,括号中使用$event, 才能获取到MouseEvent,不过我们这种加括号的情况,一般是传自己需要的参数

    欢迎指正~

  • 相关阅读:
    python 获取浏览器窗口句柄
    实现远程连接 Win10的Ubuntu子系统下的MySQL数据库
    Postman 测试微信小程序后台接口
    使用Postman获取小程序码时如何解决47001报错
    富文本编辑框比较
    PIL 生成随机验证码图片
    哪里买书合算
    在文件中读取列表功能
    python函数01
    修改文件内容
  • 原文地址:https://www.cnblogs.com/wszzj/p/13895908.html
Copyright © 2011-2022 走看看