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

2015-05-22 13:20:59 +08:00
 whatisnew

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');
2950 次点击
所在节点    JavaScript
16 条回复
wesley
2015-05-22 13:40:16 +08:00
不应该,如果你真要退出一个无返回值的方法,就用return ;
whatisnew
2015-05-22 13:46:14 +08:00
@wesley 那应该不写 return 吗?如果是执行一个事件的话?
jarlyyn
2015-05-22 13:48:49 +08:00
为什么要加,有什么含义?
morethansean
2015-05-22 13:56:29 +08:00
不需要的话,return 都不用写啊。你强行加个 return false 木有任何意义。
whatisnew
2015-05-22 14:04:36 +08:00
@jarlyyn 比如执行 class.set 他执行完自动 return 了 undefined 。。。

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

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

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

你是指网页写js的时候可以通过return false来阻止默认时间的执行?
yyfearth
2015-05-22 14:39:09 +08:00
@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
2015-05-22 16:14:32 +08:00
我想知道,你返回一个false是什么意思?
FrankFang128
2015-05-22 16:17:11 +08:00
楼主强迫症
kfll
2015-05-23 09:28:04 +08:00
没有返回的方法,个人比较推荐加 return this
domino
2015-05-23 22:10:31 +08:00
弱弱的问下,这写法具体叫做什么
var class = {
method: function(arg) {
},
get: function() {
},
set: function() {
},
};
banri
2015-05-24 00:10:36 +08:00
@domino 封装

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/192965

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX