Vairāk
Kāds ir pareizais veids, kā pārbaudīt virknes vienādību JavaScript?
Kāds ir pareizais veids, kā pārbaudīt vienlīdzību starp virknēm JavaScript?
787
3
always Kamēr jūs pilnībā neizpratīsiet
==
un===
operatoru lietošanas atšķirības un sekas, izmantojiet===
operatoru, jo tas jūs pasargās no neskaidrajām (neakūtām) kļūdām un WTF. Ar "parasto"==
operatoru var iegūt ļoti negaidītus rezultātus, jo tas var būt saistīts ar iekšējo tipa piespiešanu, tāpēc vienmēr ir ieteicams izmantot===
operatoru.Lai gūtu ieskatu šajā un citās "labās un sliktās" Javascript daļās, izlasiet par Douglas Crockford kungu un viņa darbu. Ir lielisks Google Tech Talk, kurā viņš apkopo daudz labas informācijas: [http://www.youtube.com/watch?v=hQVTIJBZook][1]
Atjauninājums:
Kaila Simpsona You Don't Know JS sērija ir lieliska (un internetā lasāma bez maksas). Sērijā ir aplūkotas visbiežāk pārprastās valodas jomas un izskaidrotas "sliktās daļas", no kurām Krokfords iesaka izvairīties. Izprotot tās, jūs varēsiet tās pareizi izmantot un izvairīties no lamatām.
"Up & amp; Going" grāmatā ir sadaļa par Equality, kurā ir šis īpašais kopsavilkums par to, kad lietot brīvos (
==
) un stingros (===
) operatorus:Es joprojām iesaku Krokforda'lekciju izstrādātājiem, kuri nevēlas ieguldīt laiku, lai patiešām izprastu Javascript—s; tas ir labs padoms izstrādātājam, kurš tikai dažkārt strādā ar Javascript.
Ja jūs zināt, ka tās ir virknes, tad nav nepieciešams pārbaudīt, vai tās atbilst tipam.
Tomēr ņemiet vērā, ka virknes objekti nebūs vienādi.
atgriezīs false.
Izsauciet metodi valueOf(), lai pārvērstu to primitīvā formā virknes objektiem,
atgriezīs true
Patiesībā ir divi veidi, kā javascript sistēmā var izveidot virknes.
var str = 'Javascript';
Šādi tiek izveidota primitīva virknes vērtība.var obj = new String('Javascript');
Šādi tiek izveidots iesaiņojuma objekts. tipaString
.typeof str // string
typeof obj // object
Tātad vislabākais veids, kā pārbaudīt vienlīdzību, ir izmantot
===
operatoru, jo tas pārbauda gan vērtību, gan abu operandu tipu.Ja vēlaties pārbaudīt divu objektu vienlīdzību, tad pareizākais veids ir izmantot
String.prototipe.valueOf
.