2010-09-20 20 views

Odpowiedz

3

Ponieważ PHP nie jest bezpiecznym typem. == porównuje 2 wartości, ale === porównuje wartości i sprawdza, czy ich typy klas są takie same.

Wierzę, że "2" == 2 zwraca wartość true, a "2" === 2 zwraca wartość false.

10

Właściwie equals w Javie i == w języku C# działają jak === w php. To znaczy. "24".equals(24) zwróci false.

Które java i C# nie mają odpowiednika to PHP == (tj. Operator/metoda taka, że ​​"24".fuzzyEquals(24) zwróci wartość true). A to dlatego, że C# i Java są silnie typowane, a taki operator byłby sprzeczny z ich filozofią.

0

Tak, jak wiesz, jest to to samo w JavaScript i zgodnie z JSLint powinno być ZAWSZE używane jako sprawdzanie typu, co technicznie sprawia, że ​​== redundantne. Ale myślę, że to tylko osobiste preferencje

2

kiedy mówimy „A jest równe B” może to oznaczać kilka zupełnie różnych rzeczy

  • A i B to samo
  • A i B mają takie same wartość, to ich wartości nie są rozróżnialne przez osoby trzecie
  • a i B mogą być przekształcone w ciągi (lub numery), które są równe
  • a i B mają te same wartości hash

itp

większość języków mają różnych operatorów lub funkcji dla różnych rodzajów równości zobaczyć http://en.wikipedia.org/wiki/Equality_%28relational_operator%29#Object_identity_vs._Content_equality