JavaScript Let
let கீவேர்டு ES6 (2015) இல் அறிமுகப்படுத்தப்பட்டது
let உடன் அறிவிக்கப்பட்ட மாறிகள் Block Scope கொண்டிருக்கும்let உடன் அறிவிக்கப்பட்ட மாறிகள் பயன்படுத்துவதற்கு முன் அறிவிக்கப்பட வேண்டும்let உடன் அறிவிக்கப்பட்ட மாறிகள் அதே scope இல் மீண்டும் அறிவிக்க முடியாதுBlock Scope
ES6 (2015) க்கு முன், JavaScript க்கு Block Scope இல்லை.
JavaScript க்கு Global Scope மற்றும் Function Scope மட்டுமே இருந்தது.
ES6 இரண்டு புதிய JavaScript கீவேர்டுகளை அறிமுகப்படுத்தியது: let மற்றும் const.
இந்த இரண்டு கீவேர்டுகள் JavaScript இல் Block Scope ஐ வழங்கின:
Example: Block Scope with let
{
let x = 2;
}
// x can NOT be used here (outside the block)
Global Scope vs Block Scope
var - No Block Scope
{
var x = 2;
}
// x CAN be used here (outside the block)
var உடன் அறிவிக்கப்பட்ட மாறிகள் எப்போதும் Global Scope கொண்டிருக்கும்.
let - Has Block Scope
{
let x = 2;
}
// x can NOT be used here (outside the block)
let உடன் அறிவிக்கப்பட்ட மாறிகள் Block Scope கொண்டிருக்கும்.
Cannot be Redeclared
let உடன் வரையறுக்கப்பட்ட மாறிகள் மீண்டும் அறிவிக்க முடியாது.
நீங்கள் தற்செயலாக let உடன் அறிவிக்கப்பட்ட மாறியை மீண்டும் அறிவிக்க முடியாது.
Example: Cannot Redeclare let
let x = "John Doe";
let x = 0; // ❌ Error: Identifier 'x' has already been declared
Example: Can Redeclare var
var x = "John Doe";
var x = 0; // ✅ Allowed
Redeclaring Variables
var கீவேர்டைப் பயன்படுத்தி ஒரு மாறியை மீண்டும் அறிவிப்பது சிக்கல்களை ஏற்படுத்தும்.
Example: Problem with var redeclaration
var x = 10;
// Here x is 10
{
var x = 2;
// Here x is 2
}
// Here x is 2 (unexpected!)
var சிக்கல்:
ஒரு தொகுதிக்குள் ஒரு மாறியை மீண்டும் அறிவிப்பது தொகுதிக்கு வெளியே உள்ள மாறியையும் மீண்டும் அறிவிக்கும்.
let கீவேர்டைப் பயன்படுத்தி ஒரு மாறியை மீண்டும் அறிவிப்பது இந்த சிக்கலை தீர்க்கும்.
Example: Solution with let
let x = 10;
// Here x is 10
{
let x = 2;
// Here x is 2
}
// Here x is 10 (as expected!)
Difference Between var, let and const
| Feature | var | let | const |
|---|---|---|---|
| Scope | No Block Scope | Block Scope | Block Scope |
| Redeclare | Yes | No | No |
| Reassign | Yes | Yes | No |
| Hoisted | Yes | No | No |
| Binds this | Yes | No | No |
What is Good?
let மற்றும் const Block Scope கொண்டிருக்கின்றனlet மற்றும் const மீண்டும் அறிவிக்க முடியாதுlet மற்றும் const பயன்படுத்துவதற்கு முன் அறிவிக்கப்பட வேண்டும்let மற்றும் const this உடன் bind செய்யாதுlet மற்றும் const hoist செய்யப்படுவதில்லைWhat is Not Good?
var அறிவிக்கப்பட வேண்டியதில்லை (டிஃபால்ட் global)var hoist செய்யப்படுகிறது (அறிவிப்புக்கு முன் பயன்படுத்தலாம்)var this உடன் bind செய்கிறதுசிறந்த நடைமுறை:
நவீன JavaScript நிரலாக்கத்தில், எப்போதும் var க்கு பதிலாக let அல்லது const ஐப் பயன்படுத்தவும். இது பிழைகளைத் தடுக்க உதவுகிறது.
Browser Support
let மற்றும் const கீவேர்டுகள் Internet Explorer 11 அல்லது அதற்கு முந்தைய பதிப்புகளில் ஆதரிக்கப்படவில்லை.
| Browser | Version | Release Date |
|---|---|---|
| Chrome | 49 | Mar, 2016 |
| Edge | 12 | Jul, 2015 |
| Firefox | 36 | Jan, 2015 |
| Safari | 11 | Sep, 2017 |
| Opera | 36 | Mar, 2016 |
Redeclaring Rules
var உடன் ஒரு JavaScript மாறியை மீண்டும் அறிவிப்பது ஒரு நிரலில் எங்கும் அனுமதிக்கப்படுகிறது:
Example: Allowed with var
var x = 2; // Now x is 2
var x = 3; // Now x is 3 (redeclared)
let உடன், அதே தொகுதியில் ஒரு மாறியை மீண்டும் அறிவிப்பது அனுமதிக்கப்படவில்லை:
Example: Not Allowed with let
let x = 2; // Allowed
let x = 3; // ❌ Not allowed
{
let x = 2; // Allowed
let x = 3; // ❌ Not allowed
}
{
let x = 2; // Allowed
var x = 3; // ❌ Not allowed
}
மற்றொரு தொகுதியில் let உடன் ஒரு மாறியை மீண்டும் அறிவிப்பது அனுமதிக்கப்படுகிறது:
Example: Allowed in Different Blocks
let x = 2; // Allowed
{
let x = 3; // Allowed (different block)
}
{
let x = 4; // Allowed (different block)
}
Let Hoisting
var உடன் வரையறுக்கப்பட்ட மாறிகள் மேலே hoist செய்யப்படுகின்றன மற்றும் எந்த நேரத்திலும் துவக்கப்படலாம்.
Example: var Hoisting
carName = "Volvo";
var carName; // ✅ Allowed (hoisted)
கற்றல்:
Hoisting பற்றி மேலும் அறிய விரும்பினால், JavaScript Hoisting அத்தியாயத்தைப் படியுங்கள்.
let உடன் வரையறுக்கப்பட்ட மாறிகள் தொகுதியின் மேலே hoist செய்யப்படுகின்றன, ஆனால் துவக்கப்படவில்லை.
Example: let Hoisting (Temporal Dead Zone)
carName = "Saab"; // ❌ ReferenceError
let carName = "Volvo";
Temporal Dead Zone:
let மாறிகள் hoist செய்யப்படுகின்றன, ஆனால் "temporal dead zone" இல் இருக்கும். அறிவிப்புக்கு முன் அவற்றைப் பயன்படுத்த முயற்சிப்பது ReferenceError ஐ ஏற்படுத்தும்.