Selles õpetuses saate näidete abil teada, mis vahe on Java-l ja var-l Java-s.
JavaScripti puhul kasutatakse muutujate deklareerimiseks nii märksõnu var
kui ka let
neid.
let
Märksõna võeti kasutusele uuem versioon JavaScript tuntud ES6 (ES2015) . Ja see on eelistatav viis muutujate deklareerimiseks.
JavaScript lasi Vs var
Siin on ülevaade erinevustest let
ja var
.
lase | var |
---|---|
let on blokeeritud. | var on funktsiooni ulatus. |
let ei võimalda muutujaid uuesti deklareerida. | var võimaldab muutujad uuesti deklareerida. |
Tõstmist ei toimu üürilepingus. | Tõstmine toimub var. |
JavaScripti abil sai Vs varieeruda kohalikus ulatuses
var on funktsiooni ulatus
Funktsiooniga deklareeritud muutujat var
saab kasutada funktsiooni kõikjal. Näiteks,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
Ülaltoodud programmis deklareeritakse muutuja a koos var
. Muutujat a saab kasutada kõikjal funktsiooni sees greet
.
let on blokeeritud
Muutujaga, millega deklareeritakse, let
pääseb juurde ainult koodiploki sees. Näiteks,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
Väljund
tere maailm Püütamata ReferenceError: b pole määratletud
Eespool nimetatud programmis on muutuja a deklareeritud funktsiooni sees ja sellele pääseb juurde kõikjal funktsiooni sees (a saab funktsiooni ulatuseks).
Kuid muutuja b on deklareeritud if
ploki lause sees . b on blokeeritud ja sellega pääseb juurde ainult if
ploki sees .
Seega, kui proovite b-le juurde pääseda väljaspool if
plokki, tekib tõrge (nagu programmis eespool näidatud).
Märkus . Funktsiooni sees deklareeritud muutujad on funktsiooniga hõlmatud nii var
kui ka let
.
let ei luba muutujaid uuesti deklareerida
1. Deklareeritud muutuja var
saab uuesti deklareerida . Näiteks,
var a = 5; // 5 var a = 3; // 3
let
Domeeniga deklareeritud muutujat ei saa sama ploki või sama ulatusega uuesti deklareerida . Näiteks,
let a = 5; let a = 3; // error
Väljund
Püüdmatu SyntaxError: identifikaator 'a' on juba deklareeritud
2. Muutliku var
ulatusega või plokiga muutuja deklareerimine muudab ka välise muutuja väärtust. Näiteks,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
let
Erineva ulatusega või plokiga muutuja uuesti deklareerimisel käsitletakse seda muutujat erineva muutujana. Ja väljaspool oleva muutuja väärtus ei muutu. Näiteks,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Kui aasas var
kasutatakse muutujaga deklareeritud muutujat, muutub selle muutuja väärtus. Näiteks,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
Ülaltoodud programmis for
deklareerib silmus muutuja a uuesti. Seetõttu a
muudetakse lõpus väärtuseks 3 .
Kui muutuja deklareeritud let kasutatakse loop väärtus muutuja ei muutu. Näiteks,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
In the above program, for
loop treats variable a as a different variable than the one declared above. And the scope of that variable is only inside the for
loop. Hence the value of variable a remains 2 at the end.
let Doesn't Allow Hoisting
The variables declared with var
are hoisted to the top of the scope of the program. For example,
console.log(a); var a; // undefined (not an error)
The keyword let
does not allow hoisting. For example,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
If you want to learn more about hoisting, visit JavaScript Hoisting.
let and var Browser Support
Most of the modern browsers support the use of let
. However, some browsers do not fully support let
.
To learn more, visit JavaScript let browser support.
Märkus . Globaalse ulatuse korral käituvad mõlemad var
ja let
käituvad samamoodi. Näiteks,
var a = 5; // 5
Muutuja a on globaalse ulatusega ja sellele pääseb juurde kõikjal programmis.
let a = 5; // 5
Muutuja a on globaalse ulatusega ja sellele pääseb juurde kõikjal programmis.