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?

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:

Lai reducētu daudzās detaļas līdz dažiem vienkāršiem secinājumiem un palīdzētu jums zināt, vai dažādās situācijās izmantot == vai ===, šeit ir mani vienkāršie noteikumi:

  • Ja kāda no salīdzināšanas vērtībām (jeb pusēm) var būt patiesa vai nepatiesa vērtība, izvairieties no == un izmantojiet ===.
  • Ja kāda no salīdzinājuma vērtībām var būt kāda no šīm īpašajām vērtībām (0, """ vai [] -- tukšs masīvs), izvairieties no == un lietojiet ===.
  • Visos pārējos gadījumos droši var lietot ==. Tas ir ne tikai droši, bet daudzos gadījumos tas arī vienkāršo kodu un uzlabo lasāmību.

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.

Komentāri (13)

Ja jūs zināt, ka tās ir virknes, tad nav nepieciešams pārbaudīt, vai tās atbilst tipam.

"a" == "b"

Tomēr ņemiet vērā, ka virknes objekti nebūs vienādi.

new String("a") == new String("a")

atgriezīs false.

Izsauciet metodi valueOf(), lai pārvērstu to primitīvā formā virknes objektiem,

new String("a").valueOf() == new String("a").valueOf()

atgriezīs true

Komentāri (6)

Patiesībā ir divi veidi, kā javascript sistēmā var izveidot virknes.

  1. var str = 'Javascript'; Šādi tiek izveidota primitīva virknes vērtība.

  2. var obj = new String('Javascript'); Šādi tiek izveidots iesaiņojuma objekts. tipa String.

    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.

new String('javascript').valueOf() == new String('javascript').valueOf()
Komentāri (0)