7 Stimmen

Prüfen, ob es sicher ist, über eine JavaScript-Variable zu iterieren

Ich habe eine JavaScript-Funktion, in der jemand etwas übergeben kann, und ich iteriere über jeden seiner Schlüssel mit der

for x in obj

Syntax. Dies führt jedoch zu einem Fehler, wenn sie ein Primitivum (String oder Zahl) übergeben; das korrekte Verhalten ist, dass die Funktion auf diese genauso reagiert wie auf ein Objekt ohne Schlüssel.

Ich kann eine try..catch Block zu umgehen, aber gibt es einen anderen (prägnanteren) Weg?

7voto

Matthew Flaschen Punkte 266507
x && typeof(x) === 'object'

Dies gilt sowohl für Objekte als auch für Arrays (obwohl man normalerweise nicht mit for..in über Arrays iterieren möchte).

EDIT: Korrektur, per CMS.

2voto

Alex Sexton Punkte 10333

Es gibt eine Reihe von Möglichkeiten, wie man darauf schließen kann, hier ist eine gute:

function isIterable(obj) {
  if (obj && obj.hasOwnProperty) {
    return true;
  }
  return false;
}

Sie können eine Reihe von ihnen auswählen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X