Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Einführung in das Heben von Javascript-Variablen (Codebeispiel)

Detaillierte Einführung in das Heben von Javascript-Variablen (Codebeispiel)

不言
不言nach vorne
2019-03-12 16:28:222554Durchsuche

Der Inhalt dieses Artikels ist eine detaillierte Einführung (Codebeispiel) zur JavaScript-Variablenförderung. Ich hoffe, dass er für Freunde hilfreich ist.

Einführung

„Variablenförderung“ bedeutet, dass die Deklaration von Variablen und Funktionen physisch an den Anfang des Codes verschoben wird, dies ist jedoch nicht korrekt.
Tatsächlich ändert sich die Position der Variablen- und Funktionsdeklaration im Code nicht, sondern wird während der Kompilierungsphase im Speicher abgelegt.

Methoden zum Deklarieren von Variablen

var, let, const
Variablen, die ohne die oben genannten Schlüsselwörter direkt zugewiesen werden, werden in der Windows-Umgebung gemountet;

let a=9
const a=1
var a=6
c=5

Deklaration von Funktionen-Methode

Es gibt zwei Möglichkeiten, Funktionen in JavaScript zu deklarieren: Funktionsdeklaration und Funktionsausdruck.

//函数声明
function say(){
    console.log('hello') 
}

//函数表达式
var say=function (){
    console.log('hello') 
}

Vorteile des Hochziehens

JavaScript Einer der Vorteile der Platzierung von Funktionsdeklarationen im Speicher vor der Ausführung eines Codesegments besteht darin, dass Sie eine Funktion verwenden können, bevor Sie sie deklarieren.

/*** 正确的方式:先声明函数,再调用函数 (最佳实践)*/
function catName(name) {
    console.log("我的猫名叫 " + name);
}
catName("Tigger");
/*以上代码的执行结果是: "我的猫名叫 Tigger"*/


/*** 不推荐的方式:先调用函数,再声明函数 */
catName("Chloe");
function catName(name) {
    console.log("我的猫名叫 " + name);
}
/*代码执行的结果是: "我的猫名叫 Chloe"*/

Heraufstufungsregeln

Von var deklarierte Variablen werden nur während der Heraufstufung deklariert, nicht zugewiesen, und der Standardwert ist undefiniert; Variablen, die direkt ohne Schlüsselwörter zugewiesen werden, werden nicht heraufgestuft (demo1)

Funktionsförderung wird zusammen mit dem Funktionskörper gefördert und nicht ausgeführt (deom2)

Die Reihenfolge der Voranalyse ist von oben nach unten (demo4)

Die Priorität von Funktionen sind höher als Variablen und Funktionen Die Deklaration wird an die Spitze des aktuellen Bereichs verschoben (deom3)

Die Variablen haben den gleichen Namen und werden während der Heraufstufung nicht neu definiert Ausführungsphase überschreibt die oben genannten Zuweisungen; (demo4)

Wenn eine Funktion den gleichen Namen hat, überschreibt die spätere die vorherige während der Heraufstufung (demo5)

Die Funktion und die Variable haben derselbe Name, und wenn die Funktion hochgestuft wird, wird die Definition nicht wiederholt und der Wert, der später in der Ausführungsphase zugewiesen wird, überschreibt die vorherige Zuweisung (demo8)

Das Deklarieren einer Funktion mit einem Funktionsausdruck wird gemäß den Regeln zum Deklarieren von Variablen (deom6) hochgestuft.

Wenn die Funktion ausgeführt wird, werden auch die Variablendeklaration und die Funktionsdeklaration innerhalb der Funktion entsprechend hochgestuft Die oben genannten Regeln wurden verbessert (deom7)

let und const wurden nicht verbessert (demo9, demo10)

/**demo1**/
console.log('a=',a) //a=undefined
console.log('b=',b) // Uncaught ReferenceError: b is not defined
var a=1
b=6


/**deom2**/
console.log('a=',a)  // a=function  a() {console.log("func a()")}
function  a() {
console.log("func a()")
}

/**deom3**/
console.log('a=',a) // a=function  a() {console.log("fun a")}
var a=3
var a=4

function a(){
console.log("fun a")
}
var a=5
var a=6
console.log("a=",a) // a=6



/**deom4**/
console.log('a=',a)  // a=undefined
var a =2
console.log('a=',a) //
var a =3
var a =4
console.log('a=',a) // a=4
console.log('b=',b) //b= undefined
var b='b1'


/**deom5**/
console.log('a=',a) // a=function  a() {console.log("a2")}
function a(){
console.log("a1")
}
function a(){
console.log("a2")
}
console.log('a=',a) // a=function  a() {console.log("a2")}


/**deom6**/
console.log('a=',a) // a=undefined
var a=function(){console.log('a1')}
var a=3
var a=4
var a=5
console.log(a)
var a=function(){console.log('a2')}
console.log('a=',a) // a= ƒ (){console.log('a2')}


/**deom7**/
console.log('b=',b)
var a=3
function b(i){
    console.log('a=',a)
    var a=4
    function a(){
        console.log('fun a')
    }
    console.log('a=',a)
}
b()


/**demo8**/
console.log('a=',a) //a= function a(){ console.log('fun a')}
var a=2
function a(){
    console.log('fun a')
}
console.log('a=',a) // a=2
var a=3
var a=4
var a=5
console.log('a=',a) // a=5


/**demo9**/
console.log('a=',a) //Uncaught ReferenceError: a is not defined
let a=4


/****/
<!--demo10-->
console.log('b=',b) // Uncaught ReferenceError: b is not defined
const b=5

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in das Heben von Javascript-Variablen (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen