当前位置:  开发笔记 > 编程语言 > 正文

有条件地应用!到JavaScript中的方法

如何解决《有条件地应用!到JavaScript中的方法》经验,为你挑选了2个好方法。

不知道如何更好地说出这个(因此,找不到以前的答案,虽然我希望之前已经得到了回答),但我对是否有办法转换代码感兴趣:

if ( this.props.mailboxFilter == 'sent' ) {
  return this.currentUser.canActOnBehalfOf( m.senderID );
} else {
  return !this.currentUser.canActOnBehalfOf( m.senderID );
}

对于类似下面的内容(不确定如何更好地表达它):

var bangOrNot = this.props.mailboxFilter == 'sent ? '!' : '';
bangOrNot( this.currentUser.canActOnBehalfOf( m.senderID ) );

因为,有没有办法避免扩展的if/else语法和所有重复,通过选择是否return用一声巨响来调用该行?



1> Xophmeister..:

您可以通过其他方式简化它:

var response = this.currentUser.canActOnBehalfOf(m.senderID);
return this.props.mailboxFilter == 'sent' ? response : !response;

通常,如果函数更改任何状态,则需要避免使用此方法.但是,因为在这种情况下你无论如何都在调用它,所以首先缓存它的值是没有害处的.



2> Aᴍɪʀ..:

如果this.currentUser.canActOnBehalfOf( m.senderID )allways返回一个布尔值,你可以做XOR.

return (this.props.mailboxFilter != 'sent') ^ this.currentUser.canActOnBehalfOf(m.senderID);

异或一个布尔值true使得NOT.并且XOR with false使缓冲区保持相同的值.

请注意,我更改==!=.

并且,如果您打算实际使用它,请确保对代码的这一部分进行注释.一段时间后阅读此代码并不容易.

更新

正如Bergi建议的那样,最好使用布尔XOR !=返回一个布尔值.

return (this.props.mailboxFilter != 'sent') != this.currentUser.canActOnBehalfOf(m.senderID);

当然,如果它也可以与布尔XNOR一起使用,只需在上面的代码中替换两个!=s ==.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有