javascript:!(booleanCondition())vs(booleanCondition()== false)

Dav*_*ick 5 javascript operators conditional-statements extjs4

标题说明了一切,但是假设我有一个hasAccess()函数返回true或false

我在ExtJS 4工具栏按钮配置中使用它,如下所示:

{
  id:      'btnEditMyStuff',
  ref:     'edit_my_stuff',
  xtype:   'button',
  text:    'Edit',
  hidden:  !( MyUser.hasAccessTo('EditMystuff') )            
}
Run Code Online (Sandbox Code Playgroud)

即使在Firebug中测试时此表达式被正确评估为false,我的按钮也不会显示.

但有了这个:

{
  id:      'btnEditMyStuff',
  ref:     'edit_my_stuff',
  xtype:   'button',
  text:    'Edit',
  hidden:  ( MyUser.hasAccessTo('EditMystuff') == false )            
}
Run Code Online (Sandbox Code Playgroud)

按钮正确显示.

问题是:有什么区别?

我在这里俯瞰什么神秘的比较运算符/功能评估优先级?

我想睡觉比昨天少.提前致谢.

编辑:

 hidden:  !( MyUser.hasAccessTo('EditMystuff') )  // does not work
 hidden:  (!MyUser.hasAccessTo('EditMystuff') )   // works    
Run Code Online (Sandbox Code Playgroud)

但我仍然渴望完全理解.

Joh*_*n b 1

嗯,你基本上是对的

!(true) is false
!(false) is true
Run Code Online (Sandbox Code Playgroud)

 true == false is false
 false == false is true
Run Code Online (Sandbox Code Playgroud)

因此,如果输入只有 true 和 false,但如果输入是空数组,那么您可以

 ![] is false
Run Code Online (Sandbox Code Playgroud)

  []==false is true
Run Code Online (Sandbox Code Playgroud)