5

タイトルがすべてを物語っていますが、true または false を返す hasAccess() 関数があるとしましょう

次のような ExtJS 4 ツールバー ボタン構成で使用します。

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

Firebug でテストしたときにこの式が正しく false と評価されたとしても、私のボタンは表示されません。

しかし、これで:

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

ボタンが正しく表示されます。

問題は次のとおりです。違いは何ですか。

ここで見落としている不思議な比較演算子/関数評価の優先順位は何ですか?

昨日よりもぐっすり寝たい。前もって感謝します。

編集 :

 hidden:  !( MyUser.hasAccessTo('EditMystuff') )  // does not work
 hidden:  (!MyUser.hasAccessTo('EditMystuff') )   // works    

それでも私は完全に理解したいと切望しています。

4

1 に答える 1

1

まあ、あなたはほとんど正しいです

!(true) is false
!(false) is true

 true == false is false
 false == false is true

したがって、入力が true と false のみであるが、入力が空の配列である場合は、

 ![] is false

しかし

  []==false is true
于 2013-05-28T14:50:02.323 に答える