Don P: typsicher vergleichen

Beitrag lesen

Hallo,

Wie abfragesicher ist eigentlich in diesem speziellen Fall (d.h. Abfrage, ob Methode / Eigenschaft verfügbar) die negierte Abfrage, z.B.

if (!Array.prototype.push) {

// code
}


>   
> Generell wäre `if (!wert) {//hurz!}`{:.language-javascript}  
> ja ziemlich unscharf, weil der if-block ausgeführt wird, sobald "wert" irgendwas außer {`null, false, 0,"" , undefined`{:.language-javascript}} ist.  
  
Das ist ja genau die Absicht. Denn wenn Array.prototype.push irgendwie nicht "falsy" (d.h. nicht zu false evaluiert), dann gibt es eine Eigenschaft oder Methode namens Array.prototype.push, und natürlich sollte man erwarten, dass das die bekannte push-Funktion ist.  
  
Wenn nicht, hat ein Dilettant vorher Array.prototype um push erweitert, ohne zu wissen, dass das Ding normalerweise eine ganz bestimmte Funktion erfüllt.  
  
Gruß, Don P