qq_21532293
昏黄烛火轻摇晃
2017-08-25 03:18
采纳率: 61.5%
浏览 969

js函数调用问题 新手求解

JS行内调用为什么fn要加括号?不加括号是表示整个函数那么在onblur的时候会调用这整个函数,那么加括号执行这个函数没有返回值不是会返回undefined么?

 <input type="text" onBlur="fn()" id="ip">
<script>
    var ip=document.getElementById("ip");
    ip.onblur=fn; //不加括号
    function fn(){
        alert(1);
    }
</script>
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • showbo
    已采纳
     <input type="text" onblur="fn()" id="ip">
    这样等价于下面的,所以要加(),执行onblur的时候执行fn函数,不加()就不会执行fn了,也不报错
    ip.onblur=function(){fn()}
    
    ip.onblur=fn注册onblur事件,不能加(),加()就是执行fn将返回值作为onblur的处理函数了
    
    点赞 评论
  • wang2358jian
    wang2358jian 2017-08-25 03:23

    fn() 表示一个方法,ip.onblur=fn; 表示触发这个方法;

    点赞 评论
  • qq_29594393
    当作看不见 2017-08-25 04:27

    JavaScript 支持函数式编程 ,函数也是变量 ,一个 fn 表示的就是一个函数 ,但是函数要执行 ,fn();
    绑定事件的时候,当事件触发就会发射事件,然后执行fn,
    加括号执行这个函数没有返回值是会返回undefined;也就是什么都不做

    点赞 评论
  • zknn_1991
    zknn 2017-08-25 05:32

    楼主即用了静态绑定事件,又使用了动态绑定事件,从静态绑定事件来说,onBlur="fn()"直接绑定了fn函数,在满足条件时就执行了fn函数;动态绑定事件ip.onblur=fn; 就是ip.onblur=function f(){alert(1)},所以不用加括号,在事件触发式也能执行fn()。若是没有返回值,则返回undefined。

    点赞 评论
  • hmszhmsz
    hmszhmsz 2017-09-02 14:00

    fn是方法名,你可以和a=1一样看待也是一个变量,fn() 就是调用这个方法,方法名也是变量

    点赞 评论
  • sunny_desmond
    carrykingdow 2017-09-14 09:26

    fn是方法名,你可以和a=1一样看待也是一个变量,fn() 就是调用这个方法,方法名也是变量

    点赞 评论

相关推荐