වෘත්තීය ගණිතඥයෙකු ලෙස මා දකින Javscript ගේ විෂමත්වයක් ක්රියාකරු ==
(ද "වියුක්ත සංසන්දනය" නම්, "නින්දිත සමානාත්මතාවය" ) යනු ගොඩ නැගීමට උත්සාහ සමතාව සම්බන්ධයෙන් වීම ද ඇතුළත් වන, ආයතන අතර සිද්ධ , සමමිතික හා අධිෂ්ඨාන පූර්වකව . අවාසනාවට, මෙම මූලික ගුණාංග තුනෙන් දෙකක් අසමත් වේ:
A == A
අසත්ය විය හැකිය, උදා
NaN == NaN // false
A == B
හා B == C
එකට අදහස් කරන්නේ නැහැ A == C
, උදා:
'1' == 1 // true
1 == '01' // true
'1' == '01' // false
සමමිතික දේපල පමණක් ඉතිරිව පවතී:
A == B
එයින් ගම්ය වන්නේ B == A
, කුමන උල්ලං violation නයක් ඕනෑම අවස්ථාවක සිතාගත නොහැකි අතර බරපතල කැරැල්ලකට තුඩු දෙනු ඇත;)
සමානතා සම්බන්ධතා වැදගත් වන්නේ ඇයි?
මක්නිසාද යත් එය උදාහරණ සහ යෙදුම් ගණනාවක සහාය ඇතිව වඩාත්ම වැදගත් හා ප්රචලිත සම්බන්ධතාවයකි. වැදගත්ම යෙදුම වන්නේ ආයතන සමානතා පංතිවලට දිරාපත් වීමයි , එය සබඳතා අවබෝධ කර ගැනීමේ ඉතා පහසු සහ අවබෝධාත්මක ක්රමයකි. සමානාත්මතාවය අසමත් වීම සමානාත්මතා පංති නොමැතිකමට හේතු වන අතර, එමඟින් ප්රකට බුද්ධිමය හා අනවශ්ය සංකීර්ණතාවයේ lack නතාවයට හේතු වේ.
==
සමාන නොවන සම්බන්ධතාවයක් සඳහා ලිවීම එතරම් භයානක අදහසක් වන්නේ ඇයි?
මක්නිසාද යත් එය අපගේ හුරුපුරුදුකම සහ ප්රතිභානය බිඳ හෙළන හෙයිනි, වචනාර්ථයෙන් සමානකම්, සමානාත්මතාවය, සමගිය, සමාවයවිකතාව, අනන්යතාවය යනාදී ඕනෑම රසවත් සම්බන්ධතාවයක් සමාන වේ.
පරිවර්තනය ටයිප් කරන්න
ජාවාස්ක්රිප්ට් ප්රත්යක්ෂ සමානතාවයක් මත රඳා සිටීම වෙනුවට, වර්ග පරිවර්තනය පරිවර්තනය කරයි:
සමානාත්මතා ක්රියාකරු ඔපෙරන්ඩ් එකම වර්ගයට අයත් නොවේ නම් පරිවර්තනය කරයි, පසුව දැඩි සංසන්දනය අදාළ වේ.
නමුත් වර්ගය පරිවර්තනය අර්ථ දක්වන්නේ කෙසේද? බොහෝ ව්යතිරේකයන් සහිත සංකීර්ණ නීති මාලාවක් හරහා?
සමානතා සම්බන්ධතාවයක් ගොඩනඟා ගැනීමට උත්සාහ කිරීම
බූලියන්. පැහැදිලිවම true
හා false
සමාන නොවන අතර විවිධ පංතිවල සිටිය යුතුය.
අංක. වාසනාවකට මෙන්, සංඛ්යා වල සමානාත්මතාවය දැනටමත් මනාව නිර්වචනය කර ඇති අතර, විවිධ සංඛ්යා දෙකක් කිසි විටෙකත් එකම සමානතා පන්තියේ නොමැත. ගණිතයේ දී, එනම්. ජාවාස්ක්රිප්ට් හි සංඛ්යා පිළිබඳ සංකල්පය තරමක් විකෘති වී ඇත්තේ වඩාත් විදේශීය -0
, Infinity
සහ -Infinity
. අපගේ ගණිතමය දෙබස් කවන ශිල්පීනියක ආඥාවන් 0
හා -0
එකම පන්තිය තුළ විය යුතු (ඇත්ත -0 === 0
ය true
), infinities එක් එක් වෙනම පන්ති ගතවේ.
අංක සහ බූලියන්. පන්ති අංක අනුව, අපි බූලියන් තබන්නේ කොහේද? false
සමාන බවට පත් වෙයි 0
බැවින්ද, true
සමාන බවට පත් වෙයි 1
නමුත් වෙනත් කිසිදු අංකය:
true == 1 // true
true == 2 // false
එහි කිසිදු තර්ක දමා මෙතන true
සමග එක්ව 1
? පිළිගත හැකි 1
ලෙස කැපී පෙනේ, නමුත් එසේ ය -1
. මම පෞද්ගලිකව බවට පරිවර්තනය කිරීමට කිසිදු සාධාරණ හේතුවක් නැහැ true
කිරීමට 1
.
එය තවත් නරක අතට හැරේ:
true + 2 // 3
true - 1 // 0
එබැවින් true
සැබවින්ම 1
සියලු සංඛ්යා අතරට පරිවර්තනය වේ! එය තර්කානුකූලද? එය බුද්ධිමත් ද? පිළිතුර ව්යායාමයක් ලෙස ඉතිරිව ඇත;)
නමුත් මේ ගැන කුමක් කිව හැකිද:
1 && true // true
2 && true // true
එකම වීජ x
සමග x && true
වීම true
ය x = true
. දෙකම බව ඔප්පු 1
හා 2
(සහ වඩා වෙනත් ඕනෑම අංකය 0
) පරිවර්තනය true
! වීම - මොකක්ද ඒ පෙන්නුම් අපගේ පරිවර්තනය තවත් වැදගත් දේපල අසමත් බව ය bijection . විවිධ ආයතන දෙකක් එකම එකකට පරිවර්තනය කළ හැකි බව එයින් අදහස් වේ. එය තනිවම විශාල ගැටලුවක් විය යුතු නැත. විශාල පරිවර්තනයක් අප මෙම පරිවර්තනය භාවිතා කරන විට අපට එය හැඳින්වීමට අවශ්ය ඕනෑම දෙයක “සමානත්වය” හෝ “ලිහිල් සමානාත්මතාවය” පිළිබඳ විස්තරයක් විස්තර කරයි. නමුත් එක් දෙයක් පැහැදිලිය - එය සමානතා සම්බන්ධතාවයක් නොවනු ඇති අතර එය සමානතා පන්ති හරහා බුද්ධිමත්ව විස්තර කිරීමට යන්නේ නැත.
නමුත් අපට මීට වඩා හොඳින් කළ හැකිද?
අවම වශයෙන් ගණිතමය වශයෙන් - අනිවාර්යයෙන්ම ඔව්! Booleans සහ අංක අතර සරල සමතාව සම්බන්ධයෙන් පමණක් ඉදි කිරීමට false
හා 0
එකම පන්තිය තුළ වීම. ඒ නිසා false == 0
එකම-නොවැදගත් නොවන ලිහිල් සමානාත්මතාවය වනු ඇත.
නූල් ගැන කුමක් කිව හැකිද?
ආරම්භයේ සහ අවසානයේ සංඛ්යා බවට පරිවර්තනය කිරීම සඳහා අපට හිස් අවකාශයේ සිට නූල් කපා දැමිය හැකිය, එසේම අපට ඉදිරියෙන් ඇති ශුන්යයන් නොසලකා හැරිය හැකිය:
' 000 ' == 0 // true
' 0010 ' == 10 // true
එබැවින් අපට නූලක් සඳහා සරල රීතියක් ලැබේ - ඉදිරියෙන් ඇති සුදු අවකාශය සහ ශුන්යය කපා දමන්න. එක්කෝ අපට අංකයක් හෝ හිස් නූලක් ලැබෙනු ඇත, එම අවස්ථාවේදී අපි එම අංකයට හෝ ශුන්යයට පරිවර්තනය කරමු. නැතහොත් අපට අංකයක් ලැබෙන්නේ නැත, එවැනි අවස්ථාවකදී අපි හැරී නොයන අතර නව සම්බන්ධතාවයක් නොලැබේ.
මේ ආකාරයෙන් අපට ඇත්ත වශයෙන්ම සම්පූර්ණ බූලියන්, සංඛ්යා සහ නූල් සමූහයට පරිපූර්ණ සමානතා සම්බන්ධතාවයක් ලබා ගත හැකිය! එය හැර ... ජාවාස්ක්රිප්ට් නිර්මාණකරුවන්ට පැහැදිලිවම වෙනත් මතයක් තිබේ:
' ' == '' // false
එබැවින් දෙකම පරිවර්තනය කරන නූල් දෙක 0
හදිසියේම සමාන නොවේ! ඇයි හෝ ඇයි? රීතියට අනුව, නූල් තදින් සමාන වන විට හරියටම ලිහිල්ව සමාන වේ! මෙම රීතිය අප දකින පරිදි පාරදෘශ්යතාව බිඳ දමනවා පමණක් නොව එය අතිරික්තයක් ද වේ! අනෙක් ක්රියාකරු ==
සමඟ අනෙකට වඩා තදින් සමාන කිරීමට වෙනත් ක්රියාකරුවෙකු නිර්මාණය කිරීමේ තේරුම ===
කුමක්ද?
නිගමනය
==
සමහර මූලික ගණිතමය නීතිවලට අනුකූල නම් ලිහිල් සමානාත්මතා ක්රියාකරුට එය බෙහෙවින් ප්රයෝජනවත් වනු ඇත. නමුත් එය කනගාටුවට කරුණක් නොවන බැවින් එහි ප්රයෝජනය දුක් විඳියි.