Stilly

Stilly

بېكەت باشلىقى

يازمىلىرى
ئەگەشكۈچىلىرى
ئەگەشكەنلىرى
74
32
0

ES6 ئۆگىنىش خاتىرىسى 1 - let ۋە const جۈملىسى

let جۈملىسى

ES6 دە يېڭىدىن let جۈملىسى قوشۇلغان بولۇپ ، let جۈملىسى var غا ئوخشاشلا ئۆزگەرگۈچى مىقدار شەرھلەشكە ئىشلىتىلىدۇ . لىكىن var دىن پەرىقلىنىدىغان يىرى شۇكى let پەقەت ۋە پەقەت ئۆزى تەۋە رايون (代码块) دىلا كۈچگە ئىگە. ئىزاھات : بۇ يەردىكى تەۋە رايون (代码块) بولسا {  } نىڭ ئىچىدىكى رايوننى كۆرسىتىدۇ.


مەسىلەن تۆۋەندىكى كودقا قارايلى .

{
  let a = 10;
  var b = 1;
}

a // ReferenceError: a is not defined.
b // 1

يۇقاردا بىز let ۋە var ئارقىلىق ئىككى ئۆزگەرگۈچى مىقدار a ۋە b نى شەرھلىۋالدۇق . ئاندىن a ۋە b نى ئۇرۇپ چىقىرىپ كۆرۈپ باقساق a ئۆزگەرگۈچى مىقدار ReferenceError خاتالىقى (ئۆزگەرگۈچى مىقدار شەرىھلەنمەي تۇرۇپ ئىشلىتىلسە كۆرۈلىدىغان خاتالىق ) كۆرۈلدى . b ئۆزگەرگۈچى مىقدار نورمال ئىجرا بولدى . دىمەك بۇ مىسال ئارقىلىق let جۈملىسى ئارقىلىق شەرھلەنگەن ئۆزگەرگۈچى مىقدارنىڭ پەقەت ئۆزى تەۋە رايوندىلا مەۋجۇت بولىدىغانلىقىنى كۆرىۋىلىشقا بولىدۇ . var جۈملىسى ئارقىلىق شەرھلەنگەن ئۆزگەرگۈچى مىقدار سۈكۈت ھالەتتە پۈتۈن دائىرلىك (全局) مىقدار بولىدۇ .


مەسىلەن يەنە تۆۋەندىكى كودقا قاراپ باقايلى .

for (let i = 0; i < 10; i++) {
  // ...
}

console.log(i);
// ReferenceError: i is not defined

يۇقارقى كودتا let جۈملىسى ئارقىلىق ئىزاھلانغان i ئۆزگەرگۈچى مىقدار پەقەت for دائىرىسىدىلا مەۋجۇت بولالايدۇ . يەنى مەلۇم بىر دائىرە ئىچىدىلا ئىشلىتىلدىغان ياكى ۋاقىتلىق ئىشلىتىلدىغان مىقدارلارنى ئادەتتە let جۈملىسى ئارقىلىق ئىزاھلاپ ئىشلىتىشكە بولىدۇ .



let ۋە var نىڭ پەرقى 

var جۈملىسىدە ئادەتتە "变量提升" ھادىسى كۆرۈلىدۇ . بۇ قانداق ھادىسە ؟ ئادەتتە مەلۇم بىر شەرھلەنمىگەن ئۆزگەرچى مىقدارنى چاقىرغاندا  undefined نەتىجىە قايتىدۇ . دىمەك شەرھلەشتىن بۇرۇن چاقىرىپ ئاندىن كىيىن شەرھلەشكە بولىدۇ . لىكىن پىرىنسىپ بويىچە ئىيىتقاندا ئۆزگەرچى مىقدار ئاۋۋال شەرىھلىنىپ ئاندىن ئىشلىتلىشى كىرەك . بۇ دەل "变量提升" ھادىسىدۇر . let جۈملىسى بۇ خىل گىرامماتىكىلىق ھادىسىنى تۈزىتىپ ئاۋۋال شەرھلەپ ئاندىن ئىشلىتىشنى ھەقىيقى ئەمەلگە ئاشۇردى . 

مەسىلەن تۆۋەندىكى كودقا قارايلى .

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;

// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;


const جۈملىسى

const جۈملسى پەقەت ئوقۇشقىلا بولدىغان تۇراقلىق مىقدار شەرىھلەشتە ئىشلىتىدىغان بولۇپ ، بىر قېتىم شەرھلەنگەندىن كىيىن ئىككىنجى قېتىم قېممىتىنى ئۆزگەرتىشكە بولمايدۇ .مەسىلەن تۆۋەندىكى كودقا قارايلى 

const PI = 3.1415;
PI // 3.1415

PI = 3;
// TypeError: Assignment to constant variable.


const جۈملىسى ئارقىلىق تۇراقلىق مىقدار شەرىھلىگەندە ، تۇراقلىق مىقدار شەرھلەنگەن ھامان قىممەت بىرىش تەلەپ قىلىنىدۇ . ئاۋۋال شەرىھلەپ ئاندىن قىممەت بېرىشكە بولمايدۇ . مەسىلەن تۆۋەندىكى كودقا قارايلى .

const foo;
// SyntaxError: Missing initializer in const declaration


const جۈملىسىمۇ let جۈملىسىگە ئوخشاشلا دائىرە تەۋەلىكى بولىدۇ . پەقەت ۋە پەقەت ئۆزى تەۋە رايوندىلا ئىشلىتىشكە بولىدۇ . مەسىلەن تۆۋەندىكى كودقا قارايلى .

if (true) {
  const MAX = 5;
}

MAX // Uncaught ReferenceError: MAX is not defined


const جۈملىسىمۇ let جۈملىسىگە ئوخشاشلا ئاۋۋال شەرىھلەپ ئاندىن ئىشلىتىش تەلەپ قىلىنىدۇ .

const جۈملىسىمۇ let جۈملىسىگە ئوخشاشلا پەقەت ۋە پەقەت بىرلا قېتىم شەرھلىنىدۇ ، ئىككىنجى قېتىم قايتىدىن شەرھلەنسە خاتالىق مەلۇم قىلىدۇ .


ES5 ۋە ES6 لەردىكى مىقدار شەرھلەش جۈملىلىرى 

ES5 دە پەقەت var ۋە function دىن ئىبارەت ئىككىلا مىقدار شەرھلەش جۈملىسى بار بولۇپ ، ES6 دە let ۋە const قوشۇلغاندىن سىرت import ۋە class جۈملىسىمۇ بار . دىمەك ES6 دە جەمئىي 6 خىل مىقدار شەرھلەش جۈملىسى بار .