جاوا اسکرپٹ میں متغیر اعلانات کو سمجھنا
JavaScript کی دنیا میں، let اور var کے درمیان فرق کو سمجھنا صاف اور موثر کوڈ لکھنے کے لیے بہت ضروری ہے۔ ECMAScript 6 میں متعارف کرائے گئے، let بیان نے متغیر اعلان میں ایک نئی جہت کا اضافہ کیا ہے، جسے اکثر متغیر کے دائرہ کار پر زیادہ کنٹرول فراہم کرنے کے طور پر بیان کیا جاتا ہے۔
جبکہ دونوں دو اور var متغیرات کا اعلان کرنے کے لیے استعمال کیا جاتا ہے، وہ مختلف طرز عمل کی نمائش کرتے ہیں جو آپ کے کوڈ کو نمایاں طور پر متاثر کر سکتے ہیں۔ اس مضمون میں، ہم ان اختلافات کو دریافت کریں گے اور استعمال کرنے کے بارے میں رہنمائی فراہم کریں گے۔ دو کے بجائے var.
کمانڈ | تفصیل |
---|---|
var | ایک متغیر کا اعلان کرتا ہے، اختیاری طور پر اسے ایک قدر سے شروع کرتا ہے۔ یہ فنکشن کے دائرہ کار یا عالمی سطح پر دائرہ کار ہے اور اسے دوبارہ اعلان اور اپ ڈیٹ کیا جا سکتا ہے۔ |
let | ایک بلاک اسکوپ والے مقامی متغیر کا اعلان کرتا ہے، اختیاری طور پر اسے کسی قدر سے شروع کرتا ہے۔ اسی دائرہ کار میں اس کا دوبارہ اعلان نہیں کیا جا سکتا۔ |
const | بلاک اسکوپڈ، صرف پڑھنے کے لیے مستقل کا اعلان کرتا ہے۔ اسے اعلان کے وقت شروع کیا جانا چاہیے اور اسے دوبارہ تفویض نہیں کیا جا سکتا۔ |
writeHead | Node.js میں HTTP جواب کے لیے اسٹیٹس کوڈ اور ہیڈر سیٹ کرتا ہے۔ |
createServer | Node.js میں ایک HTTP سرور بناتا ہے، جو درخواستوں کو سن سکتا ہے اور ان کا جواب دے سکتا ہے۔ |
listen | ایک مخصوص پورٹ پر آنے والے کنکشنز کو سننا شروع کرنے کے لیے سرور کو سیٹ کرتا ہے۔ |
console.log | کنسول پر پیغامات پرنٹ کرتا ہے، جو ڈیبگنگ کے مقاصد کے لیے مفید ہے۔ |
پریکٹس میں "لیٹ" اور "var" کیسے مختلف ہیں۔
فرنٹ اینڈ اسکرپٹ مثال کے درمیان کلیدی فرق کو واضح کرتی ہے۔ اور . میں فنکشن، متغیر var x ایک if بلاک کے اندر اعلان کیا جاتا ہے اور پورے فنکشن کے دائرہ کار میں اسی متغیر کو دوبارہ تفویض کرتا ہے۔ اس کے نتیجے میں دونوں کنسول لاگ آؤٹ پٹ 2 ہوتے ہیں، یہ ظاہر کرتے ہیں کہ کیسے بلاک دائرہ کار کا احترام نہیں کرتا ہے۔ اس کے برعکس، فنکشن کا اعلان کرتا ہے۔ if بلاک کے اندر اور باہر دونوں۔ دی let بلاک کے اندر ڈیکلریشن ایک مختلف متغیر ہے، اس لیے پہلا کنسول لاگ آؤٹ پٹ 2، اور دوسرا کنسول لاگ آؤٹ پٹ 1، بلاک اسکوپ کا احترام کرتے ہوئے۔
بیک اینڈ Node.js مثال ان اختلافات کو مزید ظاہر کرنے کے لیے ایک سادہ HTTP سرور ترتیب دیتی ہے۔ استعمال کرنا اگر بلاک کے اندر، ہم اسے دیکھتے ہیں۔ بیرونی کو اوور رائٹ کرتا ہے۔ فنکشن کی گنجائش کی وجہ سے متغیر۔ دی let message بلاک کے اندر اس بلاک کے لیے مقامی رہتا ہے، ہر بلاک کے لیے مختلف پیغامات کو آؤٹ پٹ کرکے بلاک اسکوپنگ کو ظاہر کرتا ہے۔ کا استعمال اور کمانڈز سرور قائم کرتا ہے، جو کلائنٹ کو جوابات لکھتا ہے، اور اس کے عملی اطلاقات کا مظاہرہ کرتا ہے۔ اور let حقیقی دنیا کے منظرناموں میں۔
جاوا اسکرپٹ میں "let" اور "var" کے درمیان فرق کرنا
فرنٹ اینڈ جاوا اسکرپٹ کی مثال
// 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();
"let" اور "var" کے ساتھ اسکوپنگ کو سمجھنا
Backend Node.js مثال
// 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/');
دائرہ کار اور لہرانے میں گہرا غوطہ لگائیں۔
موازنہ کرتے وقت ایک اور اہم پہلو پر غور کرنا ہے۔ اور لہرا رہا ہے. اعلانات کو موجودہ دائرہ کار کے اوپر لے جانے کا جاوا اسکرپٹ کا طرز عمل ہے۔ کے ساتھ متغیرات کو لہرایا جاتا ہے اور اس کے ساتھ شروع کیا جاتا ہے۔ undefined، جو غیر متوقع نتائج کا باعث بن سکتا ہے اگر متغیر کو اس کے اعلان سے پہلے استعمال کیا جائے۔ اس کے برعکس میں، بھی لہرایا جاتا ہے، لیکن اس کی ابتدا نہیں کی جاتی ہے۔ اس کا مطلب ہے a تک رسائی اس کے اعلان سے پہلے متغیر کے نتیجے میں a .
مزید برآں، لوپس میں بندش کے مسائل کو روکنے میں مدد کرتا ہے۔ استعمال کرتے وقت ایک لوپ میں، تمام تکرار ایک ہی متغیر کا حوالہ دیتے ہیں، جو کیڑے کا باعث بن سکتے ہیں۔ البتہ، ہر تکرار کے لیے ایک نیا بائنڈنگ بناتا ہے، اس بات کو یقینی بناتا ہے کہ ہر لوپ کی تکرار کا اپنا دائرہ ہو۔ یہ رویہ بناتا ہے۔ let لوپس کے اندر متغیرات کا اعلان کرنے کے لیے ایک محفوظ اور زیادہ قابل قیاس انتخاب۔
- جاوا اسکرپٹ میں لہرانا کیا ہے؟
- اعلانات کو موجودہ دائرہ کار کے اوپر لے جانے کا جاوا اسکرپٹ کا طے شدہ طرز عمل ہے۔ اعلانات کو لہرایا اور شروع کیا جاتا ہے۔ جبکہ اعلانات لہرائے جاتے ہیں لیکن شروع نہیں ہوتے۔
- اگر آپ a استعمال کرتے ہیں تو کیا ہوتا ہے۔ اس کے اعلان سے پہلے متغیر؟
- رسائی کرنا a متغیر اس کے اعلان سے پہلے a .
- کر سکتے ہیں۔ اور اسی دائرہ کار میں دوبارہ اعلان کیا جائے؟
- نہیں، اسی دائرہ کار میں دوبارہ اعلان نہیں کیا جا سکتا، جبکہ اسی دائرہ کار میں دوبارہ اعلان کیا جا سکتا ہے۔
- کیوں ہے loops میں ترجیح؟
- لوپ کے ہر تکرار کے لیے ایک نیا بائنڈنگ بناتا ہے، اس بات کو یقینی بناتا ہے کہ ہر لوپ کی تکرار کا اپنا دائرہ ہو۔ یہ بندش سے وابستہ عام کیڑے کو روکتا ہے۔
- کرتا ہے۔ بلاک دائرہ کار کا احترام کریں؟
- نہیں، بلاک دائرہ کار کا احترام نہیں کرتا؛ یہ فنکشن کے دائرہ کار یا عالمی سطح پر دائرہ کار ہے۔
- عارضی ڈیڈ زون کیا ہے؟
- ٹیمپورل ڈیڈ زون دائرہ کار میں داخل ہونے اور متغیر کے حقیقی اعلان کے درمیان کا وقت ہے، جس کے دوران ایک متغیر a پھینکے گا۔ .
- کر سکتے ہیں۔ اسی طرح استعمال کیا جائے۔ ?
- جی ہاں، بلاک اسکوپ کی طرح ہے۔ ، لیکن یہ متغیرات کا اعلان کرنے کے لیے استعمال ہوتا ہے جنہیں دوبارہ تفویض نہیں کیا جانا چاہیے۔
- کب چاہیے؟ زیادہ استعمال کیا جائے ?
- زیادہ استعمال کیا جانا چاہئے جب آپ کو بلاک اسکوپ کی ضرورت ہو اور متغیر ہوسٹنگ اور بندش کے مسائل سے بچنے کے لیے۔
متغیر اعلانات پر حتمی خیالات
آخر میں، کا تعارف ECMAScript میں 6 نے ڈویلپرز کو JavaScript میں متغیر اعلان کے لیے زیادہ مضبوط ٹول فراہم کیا ہے۔ کے درمیان فرق کو سمجھنا اور صاف ستھرا، زیادہ برقرار رکھنے والا کوڈ لکھنے کے لیے ضروری ہے۔ جبکہ var بعض حالات میں اب بھی مفید ہو سکتا ہے، گنجائش اور لہرانے پر بہتر کنٹرول پیش کرتا ہے، کیڑے کے امکانات کو کم کرتا ہے۔
چن کر ختم مناسب منظرناموں میں، ڈویلپرز بلاک سکوپنگ کا فائدہ اٹھا سکتے ہیں اور متغیر اعلان اور لہرانے سے وابستہ عام خرابیوں سے بچ سکتے ہیں۔ یہ علم ہر اس شخص کے لیے بنیادی ہے جو جدید JavaScript کی ترقی میں مہارت حاصل کرنا چاہتے ہیں۔