推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
whatisnew

应该给每一个方法都加上 return false 吗?

  •  
  •   whatisnew · May 22, 2015 · 3778 views
    This topic created in 4191 days ago, the information mentioned may be changed or developed.

    rt 是否应该给每一个方法都加上 return false...

    var class = {
      method: function(arg) {
        if (arg) {
          return arg.argv;
        }
        return false;
      },
    
      get: function() {
        // 此次省略一堆...
        return false;
      },
    
      set: function() {
        // 此次省略一堆...
        return false;
      },
    };
    
    class.method('argc argv');
    
    16 replies  •  2015-05-24 00:10:36 +08:00
    wesley
    wesley
    May 22, 2015
    1
    不应该,如果你真要退出一个无返回值的方法,就用return ;
    whatisnew
    whatisnew
    OP
    May 22, 2015
    2
    @wesley 那应该不写 return 吗?如果是执行一个事件的话?
    jarlyyn
    jarlyyn
    May 22, 2015
    3
    为什么要加,有什么含义?
    morethansean
    morethansean
    May 22, 2015
    4
    不需要的话,return 都不用写啊。你强行加个 return false 木有任何意义。
    whatisnew
    whatisnew
    OP
    May 22, 2015
    5
    @jarlyyn 比如执行 class.set 他执行完自动 return 了 undefined 。。。

    听说加 return false 可以阻止冒泡什么的

    大家一般都是怎么做的呢?
    wind4
    wind4
    May 22, 2015
    6
    undefined !== false
    whatisnew
    whatisnew
    OP
    May 22, 2015
    7
    @wind4 undefined 有o(n)种可能啊
    morethansean
    morethansean
    May 22, 2015
    8
    @whatisnew ……你这些方法跟事件 handler 有什么关系。要阻止 dom 事件冒泡也是根据需求啊,又不是随便一个 handler 都需要阻止冒泡,你随便阻止冒泡弄出一大堆别人调试都很难发现的 bug 那时候才蛋疼。

    你的API 在定义的时候,如果是没有返回值的,那你管函数默认返回什么呢?undefined 也好你自己强行返回了个 false 也好,有什么意义呢?如果你的 API 定义就是要有返回值的,那就按照约定做返回啊。
    est
    est
    May 22, 2015
    9
    return alert("出错了!")
    jarlyyn
    jarlyyn
    May 22, 2015
    10
    @whatisnew

    你是指网页写js的时候可以通过return false来阻止默认时间的执行?
    yyfearth
    yyfearth
    May 22, 2015
    11
    @whatisnew 阻止冒泡不推荐用return false了
    应该用e.stopPropagation()
    阻止默认行为用e.preventDefault()
    阻止冒泡并且阻止其他handler继续用 e.stopImmediatePropagation()

    return false 相当于 e.stopPropagation() + e.preventDefault()
    不过还是用这些方法比较好 一个是可以在最前面阻止 避免出错导致return false没有执行
    而且控制也更加明确 可以不return继续执行下面的代码

    有些custom API需要event handler return false阻止执行 那么就按照API的定义使用就是
    wind4
    wind4
    May 22, 2015
    12
    我想知道,你返回一个false是什么意思?
    FrankFang128
    FrankFang128
    May 22, 2015 via Android
    13
    楼主强迫症
    kfll
    kfll
    May 23, 2015 via iPhone
    14
    没有返回的方法,个人比较推荐加 return this
    domino
    domino
    May 23, 2015
    15
    弱弱的问下,这写法具体叫做什么
    var class = {
    method: function(arg) {
    },
    get: function() {
    },
    set: function() {
    },
    };
    banri
    banri
    May 24, 2015 via iPhone
    16
    @domino 封装
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2210 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 13:51 · PVG 21:51 · LAX 05:51 · JFK 08:51
    ♥ Do have faith in what you're doing.