NEWS
[gelöst]Funktionen und Variablen-Gültigkeit - ich seh nicht mehr durch
-
Hallo zusammen,
wieder eine neue Herausforderung die ich nicht allein hinbekomme.
Ich sehe grad nicht mehr durch wo man was deklarieren muss, damit die Variable im ganzen Script gelesen und geschrieben werden kann.
Für die "Sehenden" von euch sicher nur ein Klacks, mir brennt jedenfalls die Stirn.
ich habe eine Funktion "function abruf ()" in der erfolgt ein request.get und darunter wieder eine Funktion "function (error, response, body)"
in der inneren Funktion wird "JSON.parse(body)" in eine Variable geschrieben die ich gern in einer anderen Funktion weiter verwenden möchte.
Ich wollte gern den Code in der inneren stückeln und in separate Funktionen auslagern.
Hier mal der Beispielcode:
function abruf () { request.get ({ url: 'https://api.mcs3.miele.com/v1/devices/?language=' + language, headers: { 'Authorization': 'Bearer ' + access_token}, }, function (error, response, body) { if (!error && response.statusCode == 200) { var obj = JSON.parse(body); } else { console.warn('Geräte fehlgeschlagen ==> StatusCode: ' + response.statusCode); } }); } function verarbeitung () { // hier will ich die Variable obj weiter verwenden fabNumber = Object.keys(obj)[0]; }geht sowas?
Ich habe viel über innere und äußere Funktionen gelesen, über mehrfach verschachtelte Funktionen und Closures, und komme einfach nicht dahinter.
-
Wenn eine Variable außerhalb von Funktionen deklariert wird, ist sie im Skript global, also aus jeder Funktion heraus zugreifbar.
var obj; function verarbeitung() { // hier will ich die Variable obj weiter verwenden var fabNumber = Object.keys(obj)[0]; } function abruf() { ... obj = JSON.parse(body); // obj darf hier nicht deklariert werden ! verarbeitung(); ... }Anstelle der Verwendung einer globalen Variablen, kann die Variable auch an die aufgerufene Funktion übergeben werden.
function verarbeitung(obj) { // obj ist lokal in dieser Funktion // hier will ich die Variable obj weiter verwenden var fabNumber = Object.keys(obj)[0]; } function abruf() { ... var obj = JSON.parse(body); verarbeitung(obj); ... } -
paul, das geht doch hier mit dem Teufel zu… es klappt.
Was ich hier alles schon probiert hatte, da hätte ich rein statistisch schon ne funktionierende Lösung finden müssen.
Aber egal, habe dank!
Welcher deiner beiden Vorschläge wäre "Best Practice"?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden