JavaScript Let

ES6 let கீவேர்டைக் கற்றுக்கொள்ளுங்கள்

JavaScript Let

let கீவேர்டு ES6 (2015) இல் அறிமுகப்படுத்தப்பட்டது

Block Scope: let உடன் அறிவிக்கப்பட்ட மாறிகள் Block Scope கொண்டிருக்கும்
Declare Before Use: let உடன் அறிவிக்கப்பட்ட மாறிகள் பயன்படுத்துவதற்கு முன் அறிவிக்கப்பட வேண்டும்
Cannot be Redeclared: 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 ஐ ஏற்படுத்தும்.

Exercise

let கீவேர்டின் சரியான பயன்பாடு எது?

let x = 5;
✓ சரி! இது let கீவேர்டின் சரியான தொடரியல். let பின்னர் மாறி பெயர், பிறகு =, பிறகு மதிப்பு
x let 5;
✗ தவறு! JavaScript தொடரியல் மாறி பெயருக்கு முன் let கீவேர்டு வர வேண்டும்
let 5 into x;
✗ தவறு! 'into' என்பது JavaScript இல் மாறி அறிவிப்புக்கு பயன்படுத்தப்படாது. சரியான தொடரியல் let x = 5;
x = 5(let);
✗ தவறு! let மாறி அறிவிப்புக்கு மட்டுமே பயன்படுத்தப்படுகிறது, ஒதுக்கீட்டுக்கு அல்ல. சரியான தொடரியல் let x = 5;