2016-07-04 13 views
3

Ich habe festgestellt, dass ich Dim eine Variable nach verwenden kann oder (mit anderen Worten) verwenden Sie es vor Dim ing, auch wenn Sie Option Explicit verwenden. Versuchen Sie folgendes:Ist Dims Position wichtig?

Option Explicit 

x = "before Dim" 
WScript.Echo x 

Dim x 
x = "after Dim" 
WScript.Echo x 

Die gleichen funktioniert gut ein in Sub oder Function.

Offensichtlich ist es egal, in welcher Zeile der Dim ist, solange es im selben Bereich ist (aktuell Function/Sub oder global). Ich frage mich, warum das funktioniert. Microsofts documentation sagt ausdrücklich (Hervorhebung von mir):

Die Lebensdauer einer variablen Skript-Ebene erstreckt sich von die Zeit bis zum Zeitpunkt deklariert ist das Skript fertig ausgeführt wird.

Ich lese das wie: zuerst Dim dann verwenden. Aber ich habe mich getäuscht...? Warum ist das?!

VB6 tut nicht dies zulassen:

--------------------------- 
Microsoft Visual Basic 
--------------------------- 
Compile error: 

Variable not defined 
--------------------------- 
OK Help 
--------------------------- 
+0

Der Extrakt ist der Vertrag und was müssen Sie folgen, weil wir Abhängigkeiten nehmen nicht auf die Umsetzung. Für Ihre allgemeinen Informationen werden die Erklärungen nach oben gehisst. Siehe http://i1.blogs.msdn.com/b/ericlippert/archive/2004/06/18/159378.aspx –

Antwort

8

Der Extrakt ist der Vertrag und was müssen Sie folgen, weil wir übernehmen keine Abhängigkeiten von Implementierung. Für Ihre allgemeinen Informationen werden die Erklärungen nach oben gehisst. Eric Lippertwrote:

Warum wir eine Variable verwenden kann, bevor es in VBScript deklarieren? ...

Was ist los? Nun, lass mich dich das fragen - wenn du denkst, dass komisch aussieht, warum denkst du, das sieht normal aus?

Dim s 
s = Foo(123) 
Function Foo(x) 
    Foo = x + 345 
End Function 

Dort wird die Funktion verwendet wird, bevor es deklariert wird, aber dass nicht Fehler, den Sie, nicht wahr?

In ähnlicher Weise können Variablen verwendet werden, bevor sie deklariert werden. Das Verhalten ist von Entwurf. Variablendeklarationen und Funktionen sind logisch "hochgezogen" an den Anfang ihres Bereichs in VBScript und JScript.

EDIT

VBScript so weit wie möglich VBA Regeln folgt. Dies ist das Implementierungsdokument zur Implementierung von VBA. Für VBS/VBA-Programmierer ist es nur für Info.

https://msdn.microsoft.com/en-us/library/dd361851.aspx

+0

Dieser Link ist genau das, wonach ich gesucht habe! –

+0

Gute Antwort. +1 – Lankymart

+0

Das letzte Dokument ist eine interessante Lektüre, aber alles, was es zu diesem Thema sagt, ist * Die Variable ist innerhalb des einschließenden Projekts * IIUC zugänglich. –

Verwandte Themen