2017-01-12 2 views
-2

Ich war aroun spielen und fand interessante SacheBlock-Rahmen in js

var x = "x"; 
function a(){ 
    var x = "y"; 
    if(1){ 
    var x = "g"; 
    alert(x); 
    } 
    alert(x) 
} 

a() 

warum diese Ausgabe "g", "g" insted "g", "y"? Das if erzeugt einen anderen Blockbereich und x ist eine lokale Variable, was bedeutet, wenn ich aus dem if-Block herauskomme, sollte das äußere x (das gleich "y" ist) gedruckt werden.

+1

Bitte suchen Sie google. Dies wurde viele Male beantwortet. Auch für den Blockbereich verwenden Sie "let". Variablen, die mit 'var' deklariert sind, werden gehisst – Rajesh

+0

Variables Heben http://StackOverflow.com/q/7506844/2942475 – Rishabh

+0

JS hat keinen Blockbereich. Es hat Funktionsumfang. – evolutionxbox

Antwort

0

Der Grund dafür ist, dass die Variable x einen Funktionsebenenbereich hat und der letzte Wert für die Variable "g" ist. Und Sie haben es zweimal mit dem gleichen Wert von x "g" alarmiert.