рдЕрдВрддрд░ == рдФрд░ === рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ

рдореИрдВ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ, рд╣рд╛рдВ, рд▓реЗрдЦ рдереЛрдбрд╝рд╛ рдЧрд▓рдд рд╣реИ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдХрд╛рдлреА рдЕрдЪреНрдЫреА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╣реИрдВ)ред

рд╢реБрдн рджрд┐рдиред


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рджреЛ рд╕рдорд╛рди рдСрдкрд░реЗрдЯрд░ рд╣реИрдВ: == рдФрд░ ===ред рдпрджрд┐ рдЖрдк рдЙрдирдХреЗ рдорддрднреЗрджреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЧрд▓рддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЦреЛрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ == рдФрд░ === рдЕрд▓рдЧ рдХреИрд╕реЗ рд╣реИрдВ, рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛рдПред

рдСрдкрд░реЗрдЯрд░ == рд╕рдорд╛рдирддрд╛ рдкрд░ рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди === - рдкрд╣рдЪрд╛рди рдкрд░ред === рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рджреЛ рдорд╛рди рдирд╣реАрдВ рдбрд╛рд▓рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рд╣реИ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

abc == undefined; // true,  abc = undefined | null abc === undefined; // true -   abc = undefined! 

 abc == false; // true,  abc = false | 0 | '' | [] abc === false; // true,   abc = false! 

рдЖрдЦрд┐рд░рдХрд╛рд░, рдЭреВрдареЗ рдФрд░ 0 (рдпрд╛ '', рдпрд╛ []) рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдирд╛ рд╢рд╛рдпрдж рд╣реА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛред

рдмреЗрд╢рдХ:
 5 === 5; // true true === true; // true 'abc' === 'abc'; // true 


рдФрд░ рдЕрдм рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рд╣реИред
 5 == 5; // true 5 === 5; // true new Number(5) == 5; // true new Number(5) === 5; // false! 


рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рд╣рд╛рдВ, рдХреЛрдИ рднреА рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧ рд╕рдВрдЦреНрдпрд╛ рдХреА рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХреБрдЫ рд╕реНрдерд┐рд░ред рдпрд╣ рдПрдХ рдмрд╛рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрд╢рд╛ рдЦреБрдж рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧ рдХреА рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП - рдпрд╣ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧ рдХреА рджреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ)ред

Arrays / рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕


рд▓реЗрдХрд┐рди рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рджреЛрдиреЛрдВ рдСрдкрд░реЗрдЯрд░ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ:
 var a = {}; a == {}; // false a === {}; // false a == a; // true a === a; // true 


рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
 function isEq(a, b){ if(a == b) return true; for(var i in a){ if(!isEq(a[i], b[i])) return false; } for(var i in b){ if(!isEq(a[i], b[i])) return false; } return true; } 

рдереЛрдбрд╝рд╛ рдореИрд▓рд╛, рджреЛ рдЪрдХреНрд░, рдФрд░ hasOwnProperty рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛; рдЦреИрд░, рдпрд╣ рд╣реЛрдЧрд╛

рдпрд╣ <-


рдПрдХ рдФрд░ рдЧрдбреНрдбрд╛ рд╣реИред рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд╕ рд╣реИред
 (function(){ this == 5; // true this === 5; // false }).call(5); 


рдпрд╣рд╛рдБ рдРрд╕рд╛ рдХреНрд╖рдг рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдирд╛ рдирд╣реАрдВ рд▓рд╛рдпрдХ рд╣реИред

рдХреБрд▓ ...


рдареАрдХ рд╣реИ, рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реБрдкрд░ рдврд╛рдВрдЪреЗ рдХреЛ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо == рдСрдкрд░реЗрдЯрд░ рдХреЛ == рдХреЗ рдмрдЬрд╛рдп рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреВрд░реНрд╡рд╡рд░реНрддреА рд╣реИ, рдФрд░ рдХреЛрдИ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХрдИ рдмрдЧ рдвреВрдВрдврддрд╛ рд╣реИред
 func(new Number(5)); (function(){ func(this); }).call(5); 


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВ? рдХреГрдкрдпрд╛!

jQuery:
 $.each([1, 2, 3, 4, 5], function(){ func(this); }); 


рдЦреИрд░, рдпрд╛ рдореИрдВ рдЖрдВрдХрдбрд╝рд╛ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
 var Five = new Number(5); Five.a = 2; //  ,   5   //  - ... func(Five); 


рдпрд╣ рд╕рдм, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдпреБрдкреАрдбреАред рд▓рд┐рдВрдХ рд╕рд┐рдВрджреВрд░ 1 , рдЬреЗрдПрд╕ рдЧрд╛рд░реНрдбрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In138272/


All Articles