So bekomme ich unglaubliche seltsame Java-Skript-Verhalten in einem Chrom-Tab. Die Seite befindet sich hinter einem Login, also kann ich sie nicht posten, aber kann jemand genau erklären, was passiert?Unerwartete Javascript For-Loop-Verhalten in Chrome
for(var z in ""){ console.log(z) }
contains
//undefined
hmm ...
var key = ""
for(var i in key){ console.log(i) }
contains
//undefined
Object.getOwnPropertyNames(key)
//["length"]
Object.getOwnPropertySymbols(key)
//[]
window[key]
//undefined
Zuerst dachte ich, dies einer jener JS Verhalten und war bereit, es zu JSWTF vorzulegen aber das Verhalten läuft ordnungsgemäß in einem anderen Chrome-Tab:
for(var i in ""){ console.log('ran',i) }
//undefined
Wie wurde ein Wert einer leeren Zeichenfolge zugewiesen? Wo ist es? Was macht die for-Schleife?
edit: Die gleiche Seite in Firefox gibt das erwartete Verhalten in der Konsole zurück. Ich habe keine anderen Browser getestet
Sie erwähnen Chrome speziell - bedeutet das, dass sich dieselbe Seite in anderen Browsern nicht so verhält? – nnnnnn
eng verwandt: [Wie definiert man Methode in Javascript auf 'Array.prototype' und' Object.prototype', so dass es nicht in 'for in' Schleife erscheint (http://stackoverflow.com/q/13296340/ 1048572) - Etwas auf dieser speziellen Seite fügte "String.prototype" eine aufzählbare Eigenschaft 'contains' hinzu. – Bergi
Dies bedeutet, dass der String-Prototyp geändert wurde. Versuchen Sie eine Konsole hier auf dem Stack-Overflow zu öffnen und Sie werden viel mehr seltsame Methoden bekommen :) – Damon