我在as3中几乎是新手,我带来了一个双重声明,声明'如果'吼叫,做同样的想法?
public function get products(a:Object){
if(a){
// smtg
}
if(null!=a){
// smtg
}
}
答案 0 :(得分:5)
您可以看到与此示例的区别:
function test ( a:Object ):void
{
if ( a )
trace( "A" );
if ( a != null )
trace( "B" );
}
test( false ); // B
test( "" ); // B
test( 0 ); // B
test( true ); // A & B
// ...
评估为 false 的所有值都会产生不同的结果。
答案 1 :(得分:0)
请注意,作为对象a
的对象不能为空,但仍为false
,因此if (a)
和if(a != null)
可能会产生不同的结果。
答案 2 :(得分:0)
if (a)
与if (a != null)
不同。
后者仅检查a
和null
之间的相等性;前者将a
转换为Boolean
,然后检查结果是否为true
。
前者基本上是:
if (Boolean(a))
...
将a
转换为Boolean
时会发生什么情况取决于a
的类型。您可以在此处找到规则(请参阅“转换为布尔值”):
在我的测试中,我发现if (a)
的速度是if (a != null)
的两倍,即使a
是对象而不是字符串或一个数字。