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)
但我仍然渴望完全理解.
嗯,你基本上是对的
!(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)