A legjobb válasz
Abszolút!
PHP-ben, Javascriptben vagy bármely más nyelvben, amely laza és szigorú egyenértékűségi ellenőrzéseket is kínál, a legjobb a szigorú verziót használni, hacsak nincs kényszerítő oka ellenkezőjére . (Valójában egyes szoftverfejlesztők ragaszkodnak ahhoz, hogy egyáltalán ne használjon laza egyenlőség-ellenőrzést!) Ennek számos oka van.
Először is, a laza egyenértékűség használata a hibák egész osztályához vezethet. hogy szigorú egyenértékűséggel elkerülhető. Noha a PHP különösen híres arról, hogy „segítőkész”, a dinamikus gépeléssel rendelkező nyelvek többsége engedékeny a típusok közötti konvertálásra. A laza egyenértékűségen túllépő adatok sok esetben rendben lehetnek, és sokkal mélyebben belemennek a kódba, mielőtt hibát váltanának ki vagy váratlan mellékhatást okoznának. A szigorú egyenértékűségi ellenőrzések időközben jobban hasonlítanak a statikusan tipizált nyelveken előforduló ellenőrzések típusaira; sokkal kevésbé valószínű, hogy hibás formátumú adatok futnak.
Kapcsolódó probléma az, hogy a laza egyenértékűség hogyan nehezíti meg a kód indoklását. Ha szigorú egyenértékűséget alkalmaz, sok feltételezést tehet az ellenőrzésen áteső adatokról. Ugyanez nem igaz, ha laza egyenértékűséget használ. Tekintsük a következő két példát.
// Example #1: strict
if ( $i === 1 ) {
doThing( $i );
}
// Example #2: loose
if ( $i == 1 ) {
doThing( $i );
}
Az első példában feltételezhetjük, hogy a „doThing” függvényt numerikus értékkel hívják meg, és csak azt kell figyelembe vennünk, hogy ez a függvény hogyan kezeli a számokat.
A második példában azonban a „doThing” különböző típusokkal hívható meg, beleértve a karakterláncokat vagy a logikai értékeket. A „doThing” funkció átolvasása során meg kell fontolnia az egyes típusok kezelésének módját, beleértve az implicit típusú konverziókra vonatkozó összes (és néha értelmetlen) szabályt. Sokat kell nyomon követni a fejedben!
Továbbá, a laza egyenértékűség használatával nem vagy egyértelmű. Ez nemcsak a logika révén járul hozzá az okfejtés nehézségeihez, de nem képes megragadni azokat a tényleges követelményeket sem, amelyeket a logika állítólag képvisel. A fenti 2. példa alapján nem lehet megmondani, hogy az eredeti programozó számértékeket, karakterlánc-értékeket, logikai értékeket vagy ezek valamilyen kombinációját várta-e. Fejfájássá teszi a kód fenntartását.
Végül, bár az implicit típusú casting kényelmes lehet, professzionális körülmények között alig van rá szükség. Mindig beállíthat értelmes alapértelmezéseket, vagy manuálisan kényszerítheti az adatokat a megfelelő típusra. Ez több kódot és több erőfeszítést igényel, de ez nagymértékben növeli a kód megbízhatóságát is.
Válasz
Ha tudja, hogy két értéknek azonos típusúnak kell lennie, akkor az igen használja a Strict ( ===) laza (==) felett. A szigorú teljesítménye jobb, mert nem kell a konverziót végrehajtania, mint a laza.
Például az 1 == “1” értéke igaz, mert az a karakterlánc számokká konvertálódik az egyenlőség ellenőrzésére
Míg az 1 === “1” hamis értéket ad vissza
A szigorú egyenlőség nagyjából “nem ugyanaz a típus?” HAMIS “
Remélem, ez segít