Mifano wa Hoisting ya JavaScript
- Marejeo ya kweli Marejeo ya JS
- Pya ja Moduli ya JS
提升(Hoisting)是 JavaScript 将声明移至顶部的默认行为。
JavaScript 声明会被提升
在 JavaScript 中,可以在使用变量之后对其进行声明。
换句话说,可以在声明变量之前使用它。
例子 1 与例子 2 的结果相同:
例子 1
x = 5; // 把 5 赋值给 x elem = document.getElementById("demo"); // Kufikia elementi elem.innerHTML = x; // 在元素中显示 x var x; // 声明 x
例子 2
var x; // 声明 x x = 5; // 把 5 赋值给 x elem = document.getElementById("demo"); // Kufikia elementi elem.innerHTML = x; // 在元素中显示 x
为了理解这一点,您必须理解术语 "hoisting"。
Hoisting 是 JavaScript 将所有声明提升到当前作用域顶部的默认行为(提升到当前脚本或当前函数的顶部)。
JavaScript 初始化不会被提升
JavaScript 只提升声明,而非初始化。
例子 1 与例子 2 的结果不相同:
例子 1
var x = 5; // Kuanzisha x var y = 7; // 初始化 y elem = document.getElementById("demo"); // Kufikia elementi elem.innerHTML = x + " " + y; // Onyesha x na y
例子 2
var x = 5; // Kuanzisha x elem = document.getElementById("demo"); // Kufikia elementi elem.innerHTML = x + " " + y; // Onyesha x na y var y = 7; // 初始化 y
最后一个例子中的 y 仍然是未定义能说得通吗?
Kwa hivyo, inaangalia kwa uwanja wa kufikiria (var y) bila kufunguliwa (=7) inatengenezwa kwenye juu.
Kwa sababu ya hoisting, y imefikiria kwenye kuzingatia kabla ya kutumiwa, lakini kwa sababu ya huzuni ya kuzingatia hayajahidi, thamani ya y inaenea kama inaendelea kwa uangalifu.
Mfano 2 pia ni pamoja:
Mfano
var x = 5; // Kuanzisha x var y; // Kufikiria y elem = document.getElementById("demo"); // Kufikia elementi elem.innerHTML = x + " " + y; // Onyesha x na y y = 7; // Kufikiria 7 kwa y
Wingia variable yako kwenye kipimo cha kwanza!
Hoisting (kwa wengia wa wafikia) ni muhimu wa JavaScript ambao haujulikana ama haujaihirishwa.
Kama mtengenezi anasema kuhusu hoisting, programu inaweza kuhudhuria vifo (kosa).
Kutaka kumaliza vifo, tukijifanya kufikiria kila variable kwenye kawaida ya kusoma.
Kwa sababu hii ni jinsi ya uangalifu wa JavaScript, tukijipenda habari hii.
JavaScript katika moduli ya kusoma hauweza kutumia variable haijafikiriwa kwa uangalifu.
Tafadhali bonyeza kitabu cha kusini kuzingatia “tumia kusoma。”
- Marejeo ya kweli Marejeo ya JS
- Pya ja Moduli ya JS