Цитата:
|
почему вы пишете именно "!==", а не "!=" - в чем тут будет отличие
|
А в том, что при == или != будет происходить приведение типов, а === или !== вернет 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