Mainīgo deklarāciju uztveršana JavaScript
JavaScript pasaulē izpratne par atšķirību starp let un var ir ļoti svarīga tīra un efektīva koda rakstīšanai. Ieviests ECMAScript 6, priekšraksts let ir pievienojis jaunu dimensiju mainīgā deklarācijai, ko bieži raksturo kā lielāku kontroli pār mainīgā darbības jomu.
Kamēr abi ļaut un var tiek izmantoti, lai deklarētu mainīgos, tie uzrāda dažādas darbības, kas var būtiski ietekmēt jūsu kodu. Šajā rakstā mēs izpētīsim šīs atšķirības un sniegsim norādījumus, kad lietot ļaut tā vietā var.
Komanda | Apraksts |
---|---|
var | Deklarē mainīgo, pēc izvēles inicializējot to uz vērtību. Tas attiecas uz funkcijām vai globāli, un to var atkārtoti deklarēt un atjaunināt. |
let | Deklarē lokālo mainīgo ar bloka darbības jomu, pēc izvēles inicializējot to uz vērtību. To nevar atkārtoti deklarēt tajā pašā darbības jomā. |
const | Deklarē bloka darbības jomas, tikai lasāmu konstanti. Tam jābūt inicializētam deklarēšanas laikā, un to nevar atkārtoti piešķirt. |
writeHead | Iestata statusa kodu un galvenes HTTP atbildei pakalpojumā Node.js. |
createServer | Vietnē Node.js izveido HTTP serveri, kas var noklausīties pieprasījumus un atbildēt uz tiem. |
listen | Iestata serveri, lai sāktu klausīties ienākošos savienojumus noteiktā portā. |
console.log | Drukā ziņojumus uz konsoli, kas ir noderīgs atkļūdošanas nolūkos. |
Kā "let" un "var" atšķiras praksē
Priekšgala skripta piemērs ilustrē galvenās atšķirības starp var un let. Iekš varTest funkcija, mainīgais var x tiek deklarēts if blokā un atkārtoti piešķir to pašu mainīgo visā funkcijas tvērumā. Tā rezultātā abi konsoles žurnāli izvada 2, parādot, kā to izdarīt var neievēro bloka darbības jomu. Turpretim, letTest funkcija deklarē let y gan if bloka iekšpusē, gan ārpusē. The let Deklarācija blokā ir atšķirīgs mainīgais, tāpēc pirmā konsoles žurnāla izvadi 2, bet otrā konsoles žurnāla izvadi 1, ievērojot bloka darbības jomu.
Aizmugursistēmas Node.js piemērā ir izveidots vienkāršs HTTP serveris, lai vēl vairāk parādītu šīs atšķirības. Izmantojot var count ja blokā, mēs to redzam var pārraksta ārējo count mainīgais funkcijas apjoma dēļ. The let message bloka iekšpusē paliek lokāls šim blokam, parādot bloka tvērumu, izvadot dažādus ziņojumus katram blokam. Pielietojums createServer un listen komandas izveido serveri, kas raksta atbildes klientam, demonstrējot praktiskus pielietojumus var un let reālās pasaules scenārijos.
Atšķirība starp "let" un "var" JavaScript
Priekšgala JavaScript piemērs
// Example demonstrating the difference between 'var' and 'let'
function varTest() {
var x = 1;
if (true) {
var x = 2; // same variable
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let y = 1;
if (true) {
let y = 2; // different variable
console.log(y); // 2
}
console.log(y); // 1
}
varTest();
letTest();
Izpratne par darbības jomu ar "let" un "var"
Aizmugursistēmas Node.js piemērs
// Backend example using Node.js to demonstrate 'let' and 'var'
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
var count = 10;
let message = "The count is: ";
if (true) {
var count = 20; // 'count' is hoisted and overwritten
let message = "New count is: "; // block-scoped
res.write(message + count); // New count is: 20
}
res.write(message + count); // The count is: 20
res.end();
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');
Iedziļinieties tvērumā un pacelšanā
Vēl viens svarīgs aspekts, kas jāņem vērā, salīdzinot let un var ir pacelšana. Pacelšana ir JavaScript darbība, pārvietojot deklarācijas uz pašreizējā tvēruma augšdaļu. Ar var, mainīgie tiek pacelti un inicializēti ar undefined, kas var novest pie negaidītiem rezultātiem, ja mainīgais tiek izmantots pirms tā deklarēšanas. Turpretim let ir arī pacelts, bet tas nav inicializēts. Tas nozīmē piekļuvi a let mainīgais, pirms tā deklarēšana radīs a ReferenceError.
Turklāt let palīdz novērst problēmas ar slēgšanu cilpās. Lietojot var ciklā visas iterācijas atsaucas uz vienu un to pašu mainīgo, kas var izraisīt kļūdas. tomēr let izveido jaunu saistījumu katrai iterācijai, nodrošinot, ka katrai cilpas iterācijai ir savs tvērums. Šī uzvedība liek let drošāka un paredzamāka izvēle mainīgo lielumu deklarēšanai cilpu ietvaros.
Bieži uzdotie jautājumi par “let” un “var” JavaScript
- Kas ir pacelšana JavaScript?
- Pacelšana ir JavaScript noklusējuma darbība, pārvietojot deklarācijas uz pašreizējā tvēruma augšdaļu. var deklarācijas tiek paceltas un inicializētas ar undefined, kamēr let deklarācijas tiek paceltas, bet nav inicializētas.
- Kas notiek, ja lietojat a let mainīgais pirms tā deklarēšanas?
- Piekļūstot a let mainīgais, pirms tā deklarācijas rezultāts ir a ReferenceError.
- Var let un var atkārtoti deklarēt tādā pašā jomā?
- Nē, let nevar atkārtoti deklarēt tajā pašā darbības jomā, turpretim var var atkārtoti deklarēt tādā pašā apjomā.
- Kāpēc ir let vēlams cilpās?
- let izveido jaunu saistījumu katrai cilpas iterācijai, nodrošinot, ka katrai cilpas iterācijai ir savs tvērums. Tas novērš izplatītas kļūdas, kas saistītas ar slēgšanu.
- Vai var ievērot bloka darbības jomu?
- Nē, var neievēro bloka darbības jomu; tas attiecas uz funkcijām vai globāli.
- Kas ir pagaidu mirušā zona?
- Temporālā mirušā zona ir laiks no tvēruma ievadīšanas līdz mainīgā faktiskajai deklarācijai, kura laikā tiek piekļūts let mainīgais iemetīs a ReferenceError.
- Var const lietot līdzīgi kā let?
- Jā, const ir līdzīgs blokam let, bet to izmanto, lai deklarētu mainīgos, kurus nevajadzētu piešķirt atkārtoti.
- Kad vajadzētu let izmantot vairāk var?
- let jālieto pāri var kad jums ir nepieciešams bloka darbības joma un lai izvairītos no problēmām ar mainīgu pacelšanu un aizvēršanu.
Pēdējās domas par mainīgajām deklarācijām
Noslēgumā, ievads let ECMAScript 6 ir nodrošinājis izstrādātājus ar spēcīgāku rīku mainīgo deklarēšanai JavaScript. Izpratne par atšķirībām starp let un var ir būtiska, lai rakstītu tīrāku, labāk uzturējamu kodu. Kamēr var joprojām var būt noderīgi noteiktās situācijās, let piedāvā labāku tvēruma un pacelšanas kontroli, samazinot kļūdu iespējamību.
Izvēloties let beidzies var atbilstošos scenārijos izstrādātāji var izmantot bloku darbības jomas priekšrocības un izvairīties no bieži sastopamām kļūmēm, kas saistītas ar mainīgo deklarēšanu un pacelšanu. Šīs zināšanas ir būtiskas ikvienam, kas vēlas apgūt modernu JavaScript izstrādi.