Izpratne par atšķirību starp "let" un "var" JavaScript

JavaScript

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 un . Iekš 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 neievēro bloka darbības jomu. Turpretim, funkcija deklarē 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 ja blokā, mēs to redzam pārraksta ārējo 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 un komandas izveido serveri, kas raksta atbildes klientam, demonstrējot praktiskus pielietojumus 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 un ir pacelšana. Pacelšana ir JavaScript darbība, pārvietojot deklarācijas uz pašreizējā tvēruma augšdaļu. Ar , 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 ir arī pacelts, bet tas nav inicializēts. Tas nozīmē piekļuvi a mainīgais, pirms tā deklarēšana radīs a .

Turklāt palīdz novērst problēmas ar slēgšanu cilpās. Lietojot ciklā visas iterācijas atsaucas uz vienu un to pašu mainīgo, kas var izraisīt kļūdas. tomēr 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.

  1. Kas ir pacelšana JavaScript?
  2. Pacelšana ir JavaScript noklusējuma darbība, pārvietojot deklarācijas uz pašreizējā tvēruma augšdaļu. deklarācijas tiek paceltas un inicializētas ar , kamēr deklarācijas tiek paceltas, bet nav inicializētas.
  3. Kas notiek, ja lietojat a mainīgais pirms tā deklarēšanas?
  4. Piekļūstot a mainīgais, pirms tā deklarācijas rezultāts ir a .
  5. Var un atkārtoti deklarēt tādā pašā jomā?
  6. Nē, nevar atkārtoti deklarēt tajā pašā darbības jomā, turpretim var atkārtoti deklarēt tādā pašā apjomā.
  7. Kāpēc ir vēlams cilpās?
  8. 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.
  9. Vai ievērot bloka darbības jomu?
  10. Nē, neievēro bloka darbības jomu; tas attiecas uz funkcijām vai globāli.
  11. Kas ir pagaidu mirušā zona?
  12. Temporālā mirušā zona ir laiks no tvēruma ievadīšanas līdz mainīgā faktiskajai deklarācijai, kura laikā tiek piekļūts mainīgais iemetīs a .
  13. Var lietot līdzīgi kā ?
  14. Jā, ir līdzīgs blokam , bet to izmanto, lai deklarētu mainīgos, kurus nevajadzētu piešķirt atkārtoti.
  15. Kad vajadzētu izmantot vairāk ?
  16. jālieto pāri 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 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 un 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, piedāvā labāku tvēruma un pacelšanas kontroli, samazinot kļūdu iespējamību.

Izvēloties beidzies 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.