Ist es möglich, eine JS-Funktion ohne Zugriff auf globale Variablen zu schreiben?

9

Um besser zu wissen, was eine Funktion verwendet usw. Könnte es auch schneller für Variablen-Lookups sein, wenn Sie nicht auf den globalen Bereich zugreifen?

Angenommen, ich habe:

%Vor%

im globalen Umfang. Ist es möglich, die Funktion so zu umbrechen, dass

%Vor%

hätte keinen Zugriff auf "a" und den globalen Namespace und gibt

zurück %Vor%     
Bryan Grace 12.07.2015, 19:20
quelle

3 Antworten

2

Nein, der Zugriff auf globale Variablen kann nicht vollständig verhindert werden. Das heißt, Sie können einen anderen Satz von globalen Variablen bereitstellen: Nämlich, führen Sie es in einem iframe aus. Dies ist jedoch nicht kugelsicher, da dann nur window.parent für den Zugriff auf die globalen Variablen des übergeordneten Elements verwendet werden kann.

    
icktoofay 12.07.2015, 19:22
quelle
1

Ja. Das folgende Beispiel stammt direkt von MDN eval .

Sie könnten versuchen, IF Sie könnten Ihre gesamte Codebasis in eine einzige Wrapperfunktion einbinden, so dass all Ihre Objekte und Funktionen in den lokalen Bereich fallen. (Ich bin nicht sicher, wie praktikabel das ist, aber es funktioniert in Chrome und Firefox)

%Vor%     
Dinesh 13.07.2015 01:39
quelle
0

Ich glaube, dass, egal was der aktuelle Bereich ist, es immer eine Möglichkeit gibt, zum globalen Objekt zu gelangen:

%Vor%

Dann kann man direkt auf jede Eigenschaft des globalen Objekts zugreifen:

%Vor%

Dies bedeutet, dass es keinen Weg gibt, den globalen Bereich unzugänglich zu machen, wenn das eine Frage ist.

    
Hero Qu 16.04.2017 15:31
quelle

Tags und Links