Показать сообщение отдельно
Старый 26.04.2010, 18:54
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 10  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
почему вы пишете именно "!==", а не "!=" - в чем тут будет отличие
А в том, что при == или != будет происходить приведение типов, а === или !== вернет true, только если сравниваемые типы переменных равны и их значения.
Код AS3:
var a:* = "1";
var b:* = 1;
 
 
trace( Boolean(a == b) );
trace( Boolean(a != b) );
 
trace( Boolean(a === b) );
trace( Boolean(a !== b) );
 
 
 
var i:int;
var l:int = 10*1000*1000;
var b_res:Boolean;
 
var tm_idle:uint;
var tm_sEq:uint;
var tm_sNEq:uint;
var tm_pEq:uint;
var tm_pNEq:uint;
 
 
tm_idle = getTimer();
i = -1;
while( ++i < l )
{
	b_res = true;
}
tm_idle = getTimer() - tm_idle;
 
 
tm_sEq = getTimer();
i = -1;
while( ++i < l )
{
	b_res = Boolean(a == b);
}
tm_sEq = getTimer() - tm_sEq;
 
 
tm_sNEq = getTimer();
i = -1;
while( ++i < l )
{
	b_res = Boolean(a != b);
}
tm_sNEq = getTimer() - tm_sNEq;
 
 
 
tm_pEq = getTimer();
i = -1;
while( ++i < l )
{
	b_res = Boolean(a === b);
}
tm_pEq = getTimer() - tm_pEq;
 
 
tm_pNEq = getTimer();
i = -1;
while( ++i < l )
{
	b_res = Boolean(a !== b);
}
tm_pNEq = getTimer() - tm_pNEq;
 
 
 
trace( "idle time: " + tm_idle + " ms" );
trace( "'==' time: " + tm_sEq + " ms" );
trace( "'!=' time: " + tm_sNEq + " ms" );
trace( "'===' time: " + tm_pEq + " ms" );
trace( "'!==' time: " + tm_pNEq + " ms" );
 
// РЕЗУЛЬТАТЫ:
true
false
false
true
idle time: 63 ms
'==' time: 1638 ms
'!=' time: 1601 ms
'===' time: 522 ms
'!==' time: 513 ms


Последний раз редактировалось i.o.; 26.04.2010 в 18:57.