ဂျေဟိုပ် ပေါင်းစပ်

မြင့်တင် (Hoisting) သည် JavaScript သည် အစားထိုးခြင်း ကို အထိပ်သို့ ပြောင်းရွှေ့ကြသည့် အတိုင်းအရာ (အထိပ်သို့ ပြောင်းရွှေ့ကြသည့် အတိုင်းအရာ) ဖြစ်သည်။

JavaScript အစားထိုးခြင်း မမြင့်တင်ကြပေ။

JavaScript တွင် အသုံးပြုထားသော အမှတ်အသား ကို အသုံးပြုပြီး ပြီးနောက် အစားထိုးခြင်း

အခြား အဓိပ္ပာယ်ဖွဲ့စည်းခြင်း တစ်ခုဖြစ်သည်။

အကြောင်းအရာ 1 နှင့်အကြောင်းအရာ 2 အကျိုးသက်ရှိခြင်း အတူတူပါ။

အကြောင်းအရာ 1

x = 5; // 5 ကို x အစားထိုးခြင်း
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x;                     // x ကို အစားထိုးခြင်း
var x; // x ကို အစားထိုးခြင်း

亲自试一试

အကြောင်းအရာ 2

var x; // x ကို အစားထိုးခြင်း
x = 5; // 5 ကို x အစားထိုးခြင်း
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x;                     // x ကို အစားထိုးခြင်း

亲自试一试

ဒါကို သိရှိရန် အကြောင်းအရာ "hoisting" ကို သိရှိရပါသင့်သည်။

Hoisting သည် JavaScript သည် အသုံးပြုထားသော အမှတ်အသား အား အောက်ပိုင်း အကွယ်အခြေအနေတွင် မြင့်တင်ကြသေးသည်များ အား အထိပ်သို့ မြင့်တင်ကြသည့် အတိုင်းအရာ (အထိပ်သို့ မြင့်တင်ကြသည့် အတိုင်းအရာ) ဖြစ်သည်။

let နှင့် const သတ်မှတ်သည်

အသုံးပြုထားသော let သို့မဟုတ် const အသုံးပြုထားသော အမှတ်အသား နှင့် အခြေခံစကားလုံး မမြင့်တင်ကြပေ။

အသုံးပြုထားသော JS Let / Const အသုံးပြုထားသော အခြေခံစကားလုံးများကို အထူးသဖြင့် တက်ရောက်ကြည့်ပါ။

JavaScript အစားထိုးခြင်း မမြင့်တင်ကြပေ။

JavaScript သည် အစားထိုးခြင်းကို မမြင့်တင်ကြပေ။

အကြောင်းအရာ 1 နှင့်အကြောင်းအရာ 2 အကျိုးသက်ရှိခြင်း မပြတ်သေးပါ။

အကြောင်းအရာ 1

var x = 5; // 初始化 x
var y = 7; // y ကို အစားထိုးခြင်း
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y;           // 显示 x 和 y

亲自试一试

အကြောင်းအရာ 2

var x = 5; // 初始化 x
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y;           // 显示 x 和 y
var y = 7; // y ကို အစားထိုးခြင်း 

亲自试一试

နောက်ဆုံး အကြောင်းအရာတွင် y သည် အသုံးပြုခြင်းမရှိသေးသည်ကို အကောင့်ပြုနိုင်ပါသလား?

ဒါဟာ အသုံးပြုထားသော var y ကို အစားထိုးခြင်း (var y) သာ အထိပ်သို့ မြင့်တင်ကြသေးသည်။

由于 hoisting,y 在其被使用前已经被声明,但是由于未对初始化进行提升,y 的值仍是未定义。

例子 2 也一样:

实例

var x = 5; // 初始化 x
var y;     // 声明 y
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y;           // 显示 x 和 y
y = 7;    // 把 7 赋值给 y

亲自试一试

在顶部声明您的变量!

Hoisting(对很多开发者来说)是 JavaScript 的一种未知的或被忽视的行为。

如果开发者不理解 hoisting,程序也许会包含 bug(错误)。

为了避免 bug,请始终在每个作用域的开头声明所有变量。

မှတ်ချက် မှာ ဂျက်တိုင်တို့ က အပိုင်းပိုင်း စက်တင် မူးယစ်ရှာဖွေခြင်း ဖြစ်သည်။ အခြေခံ သတ္တုပေါင်း တခု ကို ကျွန်ုပ် ကောင်းမွန်စွာ ကျင့်ကြည်းလျှင်

strict mode တွင် ဂျက်တိုင်တို့ အသုံးပြုမှု များ အား သတ်မှတ်ခြင်း မရှိသေးသည့် အာအိမ် ကို အသုံးပြုခြင်း မလုံလောက်။

နောက်တစ်စင်း ပြုလုပ်ပါမည်ဟု ကျွန်ုပ် ပြောပါသည်use strict。”