cb
ABCD
  • JS Танилцуулга
  • JS Хаана байрлах вэ
  • JS Гаралт /Output/
  • JS Мэдэгдэл /Statement/
  • JS Бичиглэл /Syntax/
  • JS Тайлбар /Comments/
  • JS Хувьсагч /Variables/
  • JS Оператор /Operators/
  • JS Арифметик оператор
  • JS Даалгаварын оператор
  • JS Өгөгдлийн төрөл
  • JS Функц /Function/
  • JS Обьект /Objects/
  • JS Тэмдэгт /Strings/
  • JS Тэмдэгтийн аргууд /String Methods/
  • Тоон утга /Numbers/
  • Тоон утга /Number methods/
  • JS Массив /Array/
  • JS Массив /Array Methods/
  • JS Ангилах /Sort/
  • JS массив давтах аргууд /Iteration/
  • JS Огноо /Dates/
  • JS огнооны формат
  • JS Get Date Methods
  • JS Set Date Methods
  • JS Математик объект
  • JS Cанамсаргүй тоо
  • JS Үнэн/ Худал Boolean утга
  • JS Харьцуулах ба Логик оператор
  • JS Нөхцөл шалгах / If Else
  • JS switch оператор
  • JS For давталт
  • JS For In давталт
  • Js For / Of давталт
  • JS While Давталт
  • JS Break ба Continue
  • JS Let Хувьсагч
  • JS Const Тогтмол хувьсагч
  • JS Төрөл хувиргалт
  • JS Алдаатай ажиллах Throw ба Try Catch
  • JS Гинжин хамаарал буюу Scope, Scope Chain
  • JS Hoisting буюу Өргөх
  • JS Хатуу горим буюу Strict Mode
  • JS this түлхүүр үг
тохиргоо
Толгой хэсэг
Хажуугийн самбар
Үндсэн контент
НЭВТРЭХ

JS Hoisting буюу Өргөх

JavaScript-д Hoisting нь ажиллах орчинг үүсгэдэг. Hoisting нь Өргөх гэсэн утгыг илэрхийлнэ. Энэ хичээлээс бид JavaScript код хөшигний ард юу болдог талаар үзэх болно. Ингэсэнээр бид бичиж буй кодыг илүү сайн ойлгох алдаагүй програм бичэхэд түлхэц өгөх болно.


Declalation Hoisted

JavaScript-д хувьсагчийг ашигласны дараа зарлаж болно. Өөрөөр хэлбэл хувьсагчийг зарлахаас өмнө ашиглаж болно. 
Доорх хоёр жишээг авч үзье. Үр дүн нь ижил утга буцаах болно.

Жишээ 1

<script>
x = 15; /* x хувьсагчид 15-г хийж байна */

ur_dun = document.getElementById("test"); /* test ID тай HTML элементийг хайж байна */
ur_dun.innerHTML = x; /* Х-н утгын элементэд харуулах болно */

var x; /* Хувьсагч зарлаж байна */
</script>

Үр дүнг харах

Жишээ 2

<script>
var x; /* Хувьсагч зарлаж байна */
x = 15; /* x хувьсагчид 15-г хийж байна */

ur_dun = document.getElementById("test"); /* test ID тай HTML элементийг хайж байна */
ur_dun.innerHTML = x; /* Х-н утгын элементэд харуулах болно */

</script>

Үр дүнг харах

Хувьсагчийг кодын эхэнд зарлах болон төгсгөлд зарлах үед ижил үр дүн буцаахыг бид дээрх жишээ 1 болон жишээ 2 оос харлаа. 
Үүнийг ойлгох бид Hoist буюу Өргөх гэдэг ойлголтыг ойлгох шаардлагатай.

Hoist нь глобал орчинд зарласан бүх хувьсагч болон функцүүдийг дарааллын дагуу кодын эхэнд байрлуулдаг бөгөөд үүний дараа програмын ажиллах процесс эхлэдэг байна. Үүнийг Hoist буюу өргөх гэдэг байна.

Хэрэв функц дотор хувьсагч болон функц зарласан бол глобал орчинд зарласан хувьсагч болон функцийг дээр байрлуулсаны дараа буюу өргөсөнийн дараа дарааллын дагуу функц доторх хувьсагч болон функцийг дээр байрлуулах буюу өргөх болно үйлдлийг гүйцэтгэх болно. 


Let, Const түлхүүр үгс

let болон const түлхүүр үгээр зарласан хувьсагчийг hoisting нь мөн адил дээш өргөх болно. Гэвч эхлүүлэхгүй алдаа өгөх болно.

Утга нь: Блок код нь хувьсагчийг мэддэг боловч зарлахаас өмнө ашиглаж боломжгүй байдаг.

let болон const хувьсагчийг зарлагдахаас өмнө ашиглавал ReferenceError алдаа өгнө.

Жишээ

ReferenceError алдаа өгөх болно.

<script>
phoneName = "Galaxy";
let phoneName;

</script>

Үр дүнг харах

const хувьсагчийг зарлахаас өмнө ашиглавал syntax error буюу бичгэллийн алдаа өгөх болно.

Жишээ

Код ажиллахгүй.

<script>
phoneName = "Galaxy";
const phoneName;

</script>

Үр дүнг харах

Let болон const түлхүүр үгийг өмнөх хичээлээс илүү дэлгэрэнгүй үзнэ үү.


Зөвхөн зарласан хувьсагчийг л Hoisting буюу өргөдөг

JavaScript-д Hoisting нь зөвхөн зарласан хувьсагчийг л өргөдөг. Харин хувьсагчийн утгыг бол өргөдөггүй юм. Жишээ 1 болон жишээ 2-г харьцуулан харцгаая.

Жишээ 1

<script>
x = 15; /* x хувьсагчид утга олгож эхлүүллээ */
z = 21; /* z хувьсагчид утга олгож эхлүүллээ */

ur_dun = document.getElementById("test"); /* test ID тай HTML элементийг хайж байна */
ur_dun.innerHTML = x + " " + y; /* Х ба Y-н утгын элементэд харуулах болно */

</script>

Үр дүнг харах

Жишээ 2

<script>
x = 15; /* x хувьсагчид утга олгож эхлүүллээ */

ur_dun = document.getElementById("test"); /* test ID тай HTML элементийг хайж байна */
ur_dun.innerHTML = x + " " + y; /* Х ба Y-н утгын элементэд харуулах болно */

z = 21; /* z хувьсагчид утга олгож эхлүүллээ */
</script>

Үр дүнг харах

Жишээ 2 -д у-н утга тодорхойлогдоогүй буюу undefined гэсэн байгааг анзаарна уу.

Учир нь var y -г hoist нь дээш өргөх болно. (= 21)-г бол биш юм.

Зөвхөн у-г hoist хийсэн тул утга нь undefined буюу тодорхойлогдоогүй гэсэн утга буцаах болно.

Жишээ 2 нь доорх жишээтэй ижил гэсэн үг юм.

Жишээ 2

<script>
var x = 15; /* x хувьсагчид утга олгож эхлүүллээ */
var z; /*z хувьсагчийг зарлаж байна*/

ur_dun = document.getElementById("test"); /* test ID тай HTML элементийг хайж байна */
ur_dun.innerHTML = x + " " + y; /* Х ба Y-н утгын элементэд харуулах болно */

z = 21; /* z хувьсагчид 21 гэсэн утга олгож эхлүүллээ */
</script>

Үр дүнг харах


Хувьсагчийг дээд талд нь зарлаж байгаарай

Hoisting буюу өргөхийг ойлгох нь маш чухал юм. Хэрэв хөгжүүлэгчид

Hoisting ойлгохгүй байвал програмд алдаа гарч болно.

Алдаанаас зайлс хийхийн тулд хамрах хүрээ бүрийн эхэнд хувьсагчийг зарлаж байгаарай. 


Сэтгэгдэлүүд

Контентын нэр
JS Танилцуулга
JS Хаана байрлах вэ
JS Гаралт /Output/
JS Мэдэгдэл /Statement/
JS Бичиглэл /Syntax/
JS Тайлбар /Comments/
JS Хувьсагч /Variables/
JS Оператор /Operators/
JS Арифметик оператор
JS Даалгаварын оператор
JS Өгөгдлийн төрөл
JS Функц /Function/
JS Обьект /Objects/
JS Тэмдэгт /Strings/
JS Тэмдэгтийн аргууд /String Methods/
Тоон утга /Numbers/
Тоон утга /Number methods/
JS Массив /Array/
JS Массив /Array Methods/
JS Ангилах /Sort/
JS массив давтах аргууд /Iteration/
JS Огноо /Dates/
JS огнооны формат
JS Get Date Methods
JS Set Date Methods
JS Математик объект
JS Cанамсаргүй тоо
JS Үнэн/ Худал Boolean утга
JS Харьцуулах ба Логик оператор
JS Нөхцөл шалгах / If Else
JS switch оператор
JS For давталт
JS For In давталт
Js For / Of давталт
JS While Давталт
JS Break ба Continue
JS Let Хувьсагч
JS Const Тогтмол хувьсагч
JS Төрөл хувиргалт
JS Алдаатай ажиллах Throw ба Try Catch
JS Гинжин хамаарал буюу Scope, Scope Chain
JS Hoisting буюу Өргөх
JS Хатуу горим буюу Strict Mode
JS this түлхүүр үг
ABCD.mn ©

Нөхцөл & Шаардлага

1. General

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ultrices, justo vel imperdiet gravida, urna ligula hendrerit nibh, ac cursus nibh sapien in purus. Mauris tincidunt tincidunt turpis in porta. Integer fermentum tincidunt auctor.

2. Account

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ultrices, justo vel imperdiet gravida, urna ligula hendrerit nibh, ac cursus nibh sapien in purus. Mauris tincidunt tincidunt turpis in porta. Integer fermentum tincidunt auctor.

3. Service

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ultrices, justo vel imperdiet gravida, urna ligula hendrerit nibh, ac cursus nibh sapien in purus. Mauris tincidunt tincidunt turpis in porta. Integer fermentum tincidunt auctor.

4. Payments

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ultrices, justo vel imperdiet gravida, urna ligula hendrerit nibh, ac cursus nibh sapien in purus. Mauris tincidunt tincidunt turpis in porta. Integer fermentum tincidunt auctor.