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

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

  •  
  •   whatisnew · May 22, 2015 · 3417 views
    This topic created in 4034 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
        1
    wesley  
       May 22, 2015
    不应该,如果你真要退出一个无返回值的方法,就用return ;
    whatisnew
        2
    whatisnew  
    OP
       May 22, 2015
    @wesley 那应该不写 return 吗?如果是执行一个事件的话?
    jarlyyn
        3
    jarlyyn  
       May 22, 2015
    为什么要加,有什么含义?
    morethansean
        4
    morethansean  
       May 22, 2015
    不需要的话,return 都不用写啊。你强行加个 return false 木有任何意义。
    whatisnew
        5
    whatisnew  
    OP
       May 22, 2015
    @jarlyyn 比如执行 class.set 他执行完自动 return 了 undefined 。。。

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

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

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

    你是指网页写js的时候可以通过return false来阻止默认时间的执行?
    yyfearth
        11
    yyfearth  
       May 22, 2015
    @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
        12
    wind4  
       May 22, 2015
    我想知道,你返回一个false是什么意思?
    FrankFang128
        13
    FrankFang128  
       May 22, 2015 via Android
    楼主强迫症
    kfll
        14
    kfll  
       May 23, 2015 via iPhone
    没有返回的方法,个人比较推荐加 return this
    domino
        15
    domino  
       May 23, 2015
    弱弱的问下,这写法具体叫做什么
    var class = {
    method: function(arg) {
    },
    get: function() {
    },
    set: function() {
    },
    };
    banri
        16
    banri  
       May 24, 2015 via iPhone
    @domino 封装
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6115 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 99ms · UTC 02:05 · PVG 10:05 · LAX 19:05 · JFK 22:05
    ♥ Do have faith in what you're doing.