Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Learn ES6
Rating: 3.8 out of 5(2 ratings)
314 students

Learn ES6

Standardize your javascript skills
Created bySheikh Naveed
Last updated 5/2026
Urdu

What you'll learn

  • ES6

Course content

1 section22 lectures1h 45m total length
  • ES6 - 01 - Difference between var and let keyword2:56

    اس ویڈیو میں ہم بات کریں گے var، variable اور let کیز کے درمیان فرق پر۔ ES6 میں let کیورڈ نیا اضافہ کیا گیا ہے تاکہ var یا variable جو بھی آپ استعمال کریں، اسے بہتر طریقے سے سمجھا جا سکے۔ variable وہ ہوتا ہے جسے ہم identifier کے ذریعے set کرتے ہیں۔ مثال کے طور پر، آپ یہاں دیکھ سکتے ہیں کہ var کیورڈ کے ذریعے ہم نے identifier بنایا ہے، لیکن اگر میں console.log لکھوں گا occupied تو کوڈ دوسری لائن کو پڑھے گا اور console میں اس value کو پرنٹ کر دے گا۔ یہ چھوٹے کوڈز کے لیے ہوتا ہے جو آپ کے...


    नजर के सामने ہوتا ہے، اتنا تو ٹھیک ہے، لیکن جب آپ بڑی ایپلیکیشن پر کام کر رہے ہوتے ہیں تو آپ کو پتہ نہیں ہوتا کہ آپ نے کون سا ویری ایبل کہاں ڈیکلئیر کیا ہے اور کہاں جا کر اسے اوور رائڈ کر چکے ہیں۔ اس کو انسپیکٹ کرنا اور دوبارہ تلاش کرنا آپ کے لیے اور بھی مشکل ہو جاتا ہے۔ تو ES6 میں اس مسئلے کو حل کیا گیا ہے کہ آپ var کی جگہ let کیورڈ سے چیزوں کو ڈیفائن کر سکتے ہیں۔ تو ہم کہتے ہیں let student = حمید؛ اور اگر میں دوبارہ جا کر اسے declare اور restore کروں کوئی اور ویلیو اس میں...


    سٹودنٹ ویری ایبل ایرر دے گا، مثلاً اگر میں کہیں کوڈ میں لکھوں "لیٹ سٹودنٹ = فہیم"، تو یہ ایرر دے گا کیونکہ "لیٹ" کیورڈ نے ایک بار شناخت کر لیا ہے۔ اسی طرح تیسری چیز جو آپ کو دیکھنی ہے وہ ہے "یوز سٹرکٹ" نام کی کمانڈ کا استعمال۔ اس کے ذریعے آپ کوڈ میں مختلف قسم کی ایررز کو نہ صرف چیک کر سکتے ہیں بلکہ انہیں ٹھیک بھی کر سکتے ہیں۔ اس کا طریقہ یہ ہے کہ آپ کوڈ کے اوپر "یوز سٹرکٹ" لکھیں، کوٹیشن مارکس میں اور سیمی کولن کے ساتھ۔


    اب اگر میں یہاں "use strict" لکھ کر z = 123 کرتا ہوں تو پھر یہ دوبارہ ایرر دے گا کیونکہ ہم نے اوپر کہیں بھی z کو let یا var کیورڈ کے ذریعے declare نہیں کیا ہے۔



  • Differences between let and var keywords13:45

    اس ویڈیو میں ہم بات کریں گے کہ var کیورڈ اور let کیورڈ میں کیا فرق ہے جو کہ ES6 میں نیا متعارف کرایا گیا ہے۔ ES6 ECMAScript 6 کا نیا ورژن ہے جو JavaScript کا اپڈیٹ ورژن ہے۔ JavaScript اور ECMAScript ایک ہی چیز ہیں، لیکن جب ہم JavaScript کے نئے ورژن کی بات کرتے ہیں تو اسے ES6 کہتے ہیں۔ اس میں کچھ نئے کانسیپٹ اور ویرئیبلز متعارف کروائے گئے ہیں جن پر ہم خاص طور پر let کیورڈ کے بارے میں بات کریں گے۔ بہت سے لوگوں کو یہ کنفیوژن ہوتی ہے کہ var سے جب ہم کوئی شناختی نام...


    تو یہ کیا ہے کہ آپ یہاں ایک فور کا لوپ دیکھ رہے ہیں، اس کے بعد یہ کلی بریس شروع ہو گیا ہے۔ کلی بریس کے اندر جو کچھ بھی آتا ہے اسے ہم بلاک لیول کوڈ کہتے ہیں۔ اوکے؟ تو ویرئیبل کا جو کی ورڈ ہوتا ہے، جب بھی ہم کوئی ڈیکلئیر کرتے ہیں، کوئی بھی کی ورڈ، تو وہ گلوبلی سیو ہو جاتا ہے اور ہم اسے گلوبلی ایکسیس کر سکتے ہیں۔ اس کا مطلب یہ ہے کہ دیکھو، یہاں فور لوپ میں آپ نے ویرئیبل آئی ڈیفائن کیا اور ہم اسے فور لوپ کے کوڈ بلاک کے اندر بھی ایکسیس کر رہے ہیں اور ہم اسے باہر بھی۔


    ٹھیک ہے، تو یہ دونوں جگہوں سے ایکسیس ہو سکتا ہے۔ میں آپ کو یہ کوڈ دیتا ہوں، ہم اسے کرتے ہیں ایک بار، اور پھر اس کو چل کے دیکھتے ہیں کہ کیا نتیجہ آتا ہے۔ "رن کوڈ" پر کلک کرتے ہیں۔ یہ "رن کوڈ" والا ایکسٹینشن کس طرح سے چلے گا، یہ ہم اپنی پچھلی ویڈیو میں بات کر چکے ہیں۔ اب یہاں آپ دھیان دیں، اسے "کلئیر آؤٹ پٹ" کر دیتے ہیں، چلیں دوبارہ "رن کوڈ" کرتے ہیں۔ اب دیکھیں، یہاں ہمارے پاس آئی کی ویلیو صفر، ایک، دو آ گئی ہے۔ ٹھیک ہے، کیونکہ جب "آئی" پہلی بار چلا تو اس کی ویلیو صفر تھی، اس لیے یہاں صفر پرنٹ ہوا، پھر صفر سے...


    یہ یہاں جا کے ون اور ایکوئن سے چھوٹا تھا تو ون پرنٹ ہوا، پھر ٹو ہوا تو اس نے ٹو تک یہاں پر پرنٹ کر دیا۔ لیکن جب آئی کی ویلیو ٹی کے بعد یہاں پر آنے کے بعد پر ہوئی تو ہمارا فور لوپ چلنا بند ہو گیا۔ اور جب ہم نے اسی آئی ویری ایبل کو اس فور لوپ کے باہر سے ایکسیس کیا تو چونکہ آئی کی ویلیو ہمارے پاس تھی، لیکن یہ لوپ نہیں چلا تھا، تو اس کنسول ڈاٹ لاگ نے اس آئی کی ویلیو پرنٹ کر دی۔ یہاں پر تھی، تو اگر یہاں پر یہ والا کنسول لاگ نہ ہوتا تو ہم اسے دوبارہ کمنٹ کر دیتے اور میں...


    میں کلیر کرتا ہوں تاکہ آپ کو بہتر طریقے سے سمجھ آ سکے کہ ہم کیا بات کر رہے ہیں، اور اس کو میں رن کرتا ہوں۔ تو آپ دیکھیں یہاں پر اس نے صرف 'آئی' کی ویلیو دو ڈیفائن کی ہے کیونکہ دو تین سے چھوٹا ہے، ٹھیک ہے؟ لیکن گلوبلی 'آئی' کی جو ویلیو ہے وہ پہلے ہی سیٹ ہو چکی تھی۔ یہ اس طرح پتہ چلے گا کہ اگر میں یہ والا کوڈ بھی رن کرتا تو یہاں پر 'تھری' ویلیو ہو جاتی۔ یہ اس کا ایک فیچر بھی ہے اور ایک بگ بھی۔ بگ یہ ہے کہ جب آپ گلوبلی اس 'آئی' کی ویلیو کو ایکسیس کرنا چاہتے ہیں تو پتہ چلتا ہے کہ یہاں 'آئی' کی ویلیو مزید بڑھ چکی ہے، ٹھیک ہے؟


    اس پرابلم کو حل کرنے کے لیے ہم "let" کے کیورڈ کا حوالہ دیتے ہیں۔ تو آپ یہاں دیکھ رہے ہیں، میں اسے تھوڑا نیچے کرتا ہوں اور یہ "let" کا کیورڈ آ گیا۔ اسے انکمنٹ کرتا ہوں، کنٹرول کے ساتھ سلیش دبائیں، اور یہاں ہم دیکھتے ہیں کہ یہ کیورڈ کس طرح کام کر رہا ہے، ٹھیک ہے؟ تو رائٹ کلک کریں، کلیر آؤٹ پٹ، اس کوڈ کو میں رن کرتا ہوں۔ تو آپ دیکھ رہے ہیں کہ پھر سے اوپر جو ہم نے مثال لی تھی، اس میں "var" کے کیورڈ سے ہم نے آئیڈینٹیفائر میں ویلیو ڈالی تھی، اس کے بعد فور لوپ چلایا تھا اور اس مثال میں ہم "let" کے کیورڈ کے ذریعے...


    آئیڈینٹیفیکیشن ویلیو اسٹور کر رہے ہیں اور یہ فور کا لوپ چلا رہے ہیں، تو دونوں میں فرق یہ ہوگا کہ 'لیٹ' کا جو کی ورڈ ہے وہ صرف فور کے لوپ تک یعنی کہ اس کوڈ بلاک تک محدود رہے گا، اس کے باہر سے اسے ایکسیس نہیں کیا جا سکے گا۔ تو 'لیٹ x = 0'، پھر 0 تین سے چھوٹا ہوتا ہے اور اس نے زیرو پرنٹ کیا، پھر اس نے ون پرنٹ کیا، پھر لوپ چلا، اس نے ٹو پرنٹ کیا، پھر لوپ چلا، جب اس نے دیکھا کہ تھری آچکا ہے اور تھری تین سے چھوٹا نہیں ہوتا، لہٰذا یہ لوپ چلنا بند ہو گیا۔ لیکن اگر میں اسی 'x' کی ویلیو کو فور کے لوپ کے باہر ری کال کروں گا کیونکہ یہ...


    اگر کنسول ڈاٹ لاگ فور لوپ کے باہر لکھا جائے تو یہ ہمیں ایرر دے گا۔ اسے کلیر آؤٹ پٹ کرتے ہیں، میں اسے سلیکٹ کر کے رن کوڈ کرتا ہوں۔ تو آپ دیکھ رہے ہیں کہ فور لوپ تو چل رہا ہے جیسا پہلے چل رہا تھا، اور پھر اس نے کہا ریفرنس ایرر۔ یہ ریفرنس ایرر کہاں سے آ رہا ہے؟ یہ اس لیے کہ "لیٹ" کا کی ورڈ بلاک لیول کا ہوتا ہے، یہ گلوبلی ایکسیس نہیں ہو سکتا جیسے "وار" یا "وی اے آر" کے ویرئیبلز یا کی ورڈز گلوبلی ایکسیس ہو رہے تھے۔ تو ایک فرق ویرئیبل اور "لیٹ" کے کی ورڈ میں یہی ہے، دوسرا...


    فرق جو ہے، وہ بڑا بنیادی فرق یہ ہے کہ ریڈیکلئیر کرنے کی سہولت ہوتی ہے۔ ریڈیکلئیر کیا ہوتا ہے؟ جب ہم ایک کی ورڈ ڈیفائن کر دیتے ہیں، تو اسے دوبارہ سے پورے کوڈ بلاک میں دوبارہ ڈیفائن کیا جا سکتا ہے۔ اور یہی ایک بگ بن جاتا ہے، خاص کر جب آپ بہت بڑی فائل میں کام کر رہے ہوتے ہیں اور آپ کو معلوم نہیں ہوتا کہ پہلے سے آپ نے اسی ویریبل کو ڈیفائن کیا ہے یا نہیں۔ فرض کریں میں ان تینوں لائنز کو سیلیکٹ کرتا ہوں، رائٹ کلک کرتا ہوں اور رن کوڈ کرتا ہوں، تو دیکھیں اس کا رزلٹ کیا آتا ہے۔ یہاں لکھا ہوتا ہے "ریفرش ایرر ٹیمپ ہے"۔


    نہ سمجھ آیا، معاف کرنا یہاں پر ٹاپ ہے ویری ایبل، یہاں ہم اسے یاد کر رہے ہیں، اسے بھی ٹاپ کر دیتے ہیں، اسے کلئیر کرتے ہیں آؤٹ پٹ میں، اور یوز اسٹرکچر اور رائٹ کلک سے ہم اس کا کوڈ چلائیں گے۔ دیکھو یہاں پر ویری ایبل ڈیفائن کیا تھا، پہلا ویری ایبل ٹاپ ویری ایبل، اور یہاں ہم نے اسے دوبارہ ڈی کلئیر کیا، اس شناخت کنندہ کو اس ویلیو کے ساتھ۔ دوسرا ویری ایبل ٹاپ ویری ایبل۔ تو تم دیکھ رہے ہو کہ دوبارہ اعلان ہو گیا، اور اب اگر میں کنسول ڈاٹ لاگ سے اس ٹاپ ویری ایبل کو ایکسیس کروں تو دوسرا والا، یعنی یہ والا ویری ایبل ایکسیس ہو رہا ہے۔


    والا اووررائیڈ ہو گیا یا ری ڈیکلئیر ہو گیا، ٹھیک ہے، جب کہ یہاں اصل میں کچھ نہ کچھ ایرر شو ہونا چاہیے تھا یا مجھے پتہ ہونا چاہیے تھا کہ میں کہاں پر غلطی یا مسٹیک کر رہا ہوں۔ اسی پرابلم کو سولو کرنے کے لیے ہم یوز کرتے ہیں "لیٹ" کا کی ورڈ، اور اس کی مثال میں دیتا ہوں۔ ابھی فی الحال اس کو ہم کمنٹ کر دیتے ہیں، اور یہاں دیکھیں، ہم نے "لیٹ" کے کی ورڈ سے اسی پرابلم کو سولو کیا ہوا ہے۔ اس کو کرتے ہیں ہم انکمنٹ اگین۔ جس طریقے سے یہ "وی اے آر" کے کی ورڈ کے ذریعے ہم نے ری ڈیکلئیرشن کی تھی، اب ہم "لیٹ" کے کی ورڈ کے ذریعے ری ڈیکلئیرشن کر رہے ہیں، اور دیکھیں اس کے۔


    اندر کیا پرابلم آتی ہے؟ اگین، یہ جو ہے، یہ ہونا چاہیے جو ہو سکتا ہے، کچھ ایسا جیسے رائٹ کلک کر کے کوڈ چلانا۔ یہاں اس کے بعد دیکھیں۔ اب دیکھیں، یہ بتا رہا ہے کہ میں اسے کلئیر کر دیتا ہوں، کلئیر آؤٹ پٹ۔ دوبارہ آپ کو بالکل کلئیر اسکرین میں دکھاتا ہوں تاکہ آپ کو بہتر طریقے سے سمجھ آئے کہ یہاں کیا ہو رہا ہے۔ اب دیکھیں، یہاں اس نے ایک سنٹیکس ایرر جنریٹ کر کے دکھا دیا، یہ بتا رہا ہے کہ سنٹیکس ایرر ہے، آئیڈینٹیفائی جو پہلے ہی ڈیکلئیر ہو چکا ہے۔ مثال کے طور پر، ہمارے پاس 1200 لائنوں کا کوڈ ہے اور اس میں سے 329ویں لائن پر اگر میں "لیٹ" لکھ کر کچھ...


    ना کچھ define کیا ہوتا اور 1150 لائن سے اوپر میں نے جو دوبارہ let کے keyword کے ذریعے define کیا ہوتا تو یہاں وہ اسے دوبارہ define نہیں کرنے دیتا بلکہ ایک syntax error generate کر دیتا ہے جس سے مجھے پتہ چل جاتا ہے کہ میں کوڈ میں کہیں نہ کہیں غلطی کر رہا ہوں، جبکہ variable کے keyword کے اندر آپ کو یہ سہولت نہیں ملتی، آپ اسے declare کر دیں گے اور شاید آپ کو پتہ بھی نہ چلے کہ آپ نے کہاں اور کیسے mistake کی ہے۔ تو یہ let keyword کا دوسرا فنکشن ہے جو ہم programming میں دیکھتے ہیں۔ سب سے پہلے ہم نے بات کی global کی۔


    स्कोप की या कोड या ब्लॉक लेवल स्कोप में ये फर्क होता है کہ दूसरा वेरिएबल फिर से डिक्लेयर हो सकता है कीवर्ड के साथ, लेकिन 'लेट' के साथ ऐसा नहीं होता۔ तीसरी चीज होती ہے ہمارے پاس، جسے होस्टिंग کہتے ہیں۔ इसमें ہوتا ये ہے کہ جب हम आम طور پر کوئی वेरिएबल ڈिफائن کرتے ہیں تو ہم کیا करते ہیں؟ वेरिएबल ڈिफائن کرنے کا ایک طریقہ یہ بھی ہوتا ہے کہ ہم 'var' لکھتے ہیں اور کہتے ہیں کہ वेरिएबल کا نام 'hello' ہے۔ تو یہ وेरिएबल ڈिफائن ہو گیا، ٹھیک ہے؟ اس میں ہم نے کوئی ویلیو نہیں دی، یہ ایک چیز ہے، لیکن کم از کم اس کی شناخت ہو گئی۔ یہی کونسپٹ میں آپ کو سمجھا رہا تھا۔ تو होस्टिंग میں کیا ہوتا ہے کہ آپ نے کنسول...


    ڈاٹ لاگ لیا اور کمپیکٹ دیکھیں کامک کا کہیں بھی اوپر ہم نے ویری ایبل جنریٹ نہیں کیا اور نہ ہی کہیں ڈیفائن کیا ہے تو یہ کیا کرے گا کہ یہ یہاں پر ایک ان ڈیفائنڈ ویری ایبل ہمیں دکھا دے گا کہ یہ ویری ایبل ہے لیکن ان ڈیفائنڈ ہے۔ لیکن اسی ویری ایبل کو کمپیکٹ کے ویری ایبل کو میں آگے آگے ڈیفائن کر دیتا ہوں۔ دوبارہ کنسول ڈاٹ لاگ، جو اوپر میں نے کمانڈ لکھی ہے، میں دوبارہ لکھتا ہوں تو یہ اسے ایکسیس کرکے رن کر دے گا، جبکہ لیٹ کے کی ورڈ میں ایسی کوئی سہولت موجود نہیں ہے۔ آپ رن کوڈ کرتے ہیں تو اس میں کیا ہوتا ہے۔


    یہ کوڈ چلائے گا اور معاف کرنا مجھے اس فنکشن کو کال کرنا ہے کیونکہ جب تک میں فنکشن کال نہیں کروں گا یہ نہیں چلے گا۔ یہ ایک بنیادی بات ہے جو آپ کو سمجھنی چاہیے کہ فنکشن کے کی ورڈ سے ہم فنکشن بناتے ہیں، یہ فنکشن کا نام ہے یا فنکشن کی شناخت، پھر بریکٹس لگاتے ہیں اور اسی کی ورڈ کو یہاں کال کرتے ہیں۔ تو فنکشن کا کی ورڈ استعمال نہیں کر رہے، ہم فنکشن کو کال کر رہے ہیں، ہم فنکشن کو بنا رہے ہیں، دونوں میں فرق ہے۔ تو اگر میں دونوں کو سلیکٹ کر کے رائٹ کلک کر کے رن کوڈ کروں تو ہمارے سامنے...


    دیکھو، یہ پہلا console.log ہے جو تم دیکھ رہے ہو، اس نے undefined دکھایا کیونکہ ہم نے یہ keyword یا variable کہیں define ہی نہیں کیا تھا، لیکن اس نے کوئی error generate نہیں کی، کوئی reference error نہیں آئی۔ دوسری بات یہ کہ جب ہم نے دوسری لائن میں اس variable میں value ڈال دی، یعنی compact کے نام سے variable define کر دیا، تو پھر جب ہم نے console.log سے اسے call کیا، تو اس نے کمپنی کا variable create کر کے دکھا دیا۔ یہاں جب ہم let keyword استعمال کرتے ہیں...


    اگر ہم اس کی جگہ کچھ اور کریں تو ہمیں بالکل مختلف چیز دیکھنے کو ملے گی۔ میں اسے انکمنٹ کرتا ہوں، اور ہوسٹنگ میں ایسا ہوتا ہے کہ اگر میں اسے رن کروں گا تو آپ دیکھیں گے کہ یہ ایک طرح کی ریفرنس ایرر دکھائے گا۔ اس کے بعد دیکھیں، کوڈ ہمیں بتا رہا ہے کہ یہاں پر سینٹیکس ایرر ہے، ایک غیر متوقع ٹوکن۔ اوہ، معاف کیجئے، میں نے اسے انکمنٹ نہیں کیا تھا۔ اب ہم رائٹ کلک کر کے آؤٹ پٹ کلئیر کرتے ہیں اور فنکشن کے کی ورڈ کو دوبارہ چلاتے ہیں۔ تو پروگرامنگ میں اس قسم کی چیزیں آپ کے سامنے آنا عام بات ہے۔


    یہاں آپ دیکھ رہے ہیں ریفرنس ایرر آ رہا ہے، ریفریش ایرر کہاں پر آ رہا ہے، "کین ناٹ ایکسیس ہاؤڈی" سے پہلے انیشیلائزیشن ہو رہی ہے۔ یہ بات کر رہا ہے کہ یہاں جو کنسول ڈاٹ لاگ میں نے بنایا ہے، ہاؤڈی کا جو بھی ویریبل یا لیٹ کا کی ورڈ ہے، اگر آپ اسے کنسول میں دکھائیں تو کہتا ہے کہ جب یہ انیشیلائز ہی نہیں ہوا تو اسے کیسے ایکسیس کیا جا سکتا ہے۔ تو لیٹ کا کی ورڈ ہمیں یہ ڈیفائن کرتا ہے۔ دیکھیں اگلی لائن میں ہم نے لیٹ کے کی ورڈ سے ہاؤڈی کی شناخت کر کے ایرر دکھایا۔ تو تین چیزیں ہو گئی ہیں۔ پہلا فرق ہے اسکوپ کا، یہاں یہ گلوبل لیول اسکوپ ہے اور بلاک...


    لیول دوسری چیز ہے ہوسٹنگ اور تیسری چیز تھی ری ڈی کلیریشن، تو میں امید کرتا ہوں کہ یہ ویڈیو آپ کو وئیر، ویرئیبل کی ورڈ اور لیٹ کی ورڈ کے فرق کو سمجھنے میں بہت مدد دے گی۔ دیکھنے کا بہت شکریہ۔



  • Use CODE RUNNER extention of VS CODE to run your code and inspect in terminal3:18
  • How to use PUSH method of Arrays in JS to add values at the end of Array1:52

    اس ویڈیو میں ہم جاوا اسکرپٹ کے ارے کے پش میتھڈ کے بارے میں بات کریں گے۔ یہ میتھڈ اس وقت کام آتا ہے جب آپ نے کوئی ارے ڈیفائن کیا ہو اور اس میں کوئی نئی ویلیو شامل کرنی ہو۔ فرض کریں کہ آپ کے کسی یوزر نے کوئی نئی ویلیو ایڈ کروائی ہے اور آپ کو اسے اپنے ڈیٹابیس میں، جاوا اسکرپٹ کے ارے کے اندر شامل کرنا ہے تو آپ اس کے لیے پش میتھڈ استعمال کرتے ہیں۔ ارے کو اس طرح استعمال کرتے ہیں کہ آپ ارے کا جو شناختی نام ہے اسے منتخب کرتے ہیں، پھر ڈاٹ پش لکھتے ہیں، پھر پیرینتھیسس کھولتے اور بند کرتے ہیں، اور ان کے اندر نئی ویلیو ڈال دیتے ہیں۔


    ویلیو ڈیفائن کرتے ہیں، اب یہ ڈاٹ پوش کیا کرے گا کہ یہ آئیڈینٹیفائر کو کوڈ میں چیک کرے گا۔ یہ آئیڈینٹیفائر اسے ملے گا جو اوپر نمبر آرے کے نام سے ہے، اور اس نمبر آرے میں آپ دیکھ رہے ہیں کہ اس آرے میں ہمارے پاس دو ایلیمنٹس ہیں، ون اور ٹو۔ اور ایرر ڈیفائن ہوتی ہے، آپ کو پتہ ہے کہ بریکٹ سے اور ویری ایبل کے کیورڈ سے ہم نے اسے ڈیفائن کیا ہوا ہے۔ اس آئیڈینٹیفیکیشن ون اور ٹو۔ اگر میں اس کوڈ کو رن کرتا ہوں تو یہاں آپ دیکھ سکتے ہیں کہ میرے پاس جو رزلٹ جنریٹ ہو رہا ہے وہ 1 2 3 ہے۔ اس میں ہم نمبرد آرے بھی جنریٹ کر سکتے ہیں۔


    اسٹرنگ ویریئبل کوئی بھی یہاں پر ایڈ کر سکتا ہے جس سے چیزیں پش ہو کے اس ویریئبل آرے کے بالکل آخر میں شامل ہو جائیں گی۔



  • Understanding for loop7:25

    اس ویڈیو میں ہم سمجھیں گے فور لوپ کو، اور اگر آپ یہ لوپ اچھی طرح سمجھ گئے تو آپ کو دوسری پروگرامنگ زبانوں جیسے پی ایچ پی یا پائتھن وغیرہ میں بھی اس کے کانسپٹس سمجھنے میں آسانی ہوگی۔ تو یہاں جو سب سے اوپر آپ دیکھ رہے ہیں یہ فور لوپ کا طریقہ ہے۔ فور لوپ اس لیے چلایا جاتا ہے تاکہ آپ کو کسی خاص کوڈ کو بار بار چلانا پڑے، یعنی اٹریشن کے لیے۔ سب سے پہلے آپ دیکھ رہے ہیں یہاں ایک سیمی کولن ہے اور یہ دوسرا سیمی کولن ہے، ان دونوں سیمی کولنز کے درمیان ایک ویلیو ہے، اس کے رائٹ ہینڈ پر اور اس کے لیفٹ ہینڈ پر، اور یہ تینوں۔


    ویلیو ایک پینس میں بند ہے، اس کے بعد یہ کرلی بریکٹس ہیں، ان کے درمیان جو بھی چیز آتی ہے اسے ہم کوڈ بلاک کہتے ہیں، اور فور کے کیورڈ سے اسے شروع کرتے ہیں۔ سب سے پہلے ہم کیا کرتے ہیں کہ ہم ایک ویریئیبل ڈیفائن کرواتے ہیں اور اس کی کوئی ابتدائی ویلیو دیتے ہیں، جسے ہم انیشیل ایزر بھی کہتے ہیں۔ یہ ویریئیبل کے کیورڈ سے نہیں بلکہ سیدھے کرسر یہاں آ کر اس کوڈ بلاک کو پڑھنا شروع کرے گا۔ تو کنسول ڈائیلاگ سب سے پہلے پرنٹ کرے گا زیرو کیونکہ یہاں x کی...


    ویلیو زیرو ہے اور اس کے بعد یہ x پلس پلس کو رن کرے گا۔ تو x پلس پلس اصل میں ہوتا ہے کہ x = x پلس 1۔ تو میں آپ کو دکھا دیتا ہوں کہ یہ اس طرح ہوتا ہے: x برابر ہے x پلس 1 کے۔ تو یہاں پر یہ زیرو کی ویلیو ڈالے گا، اور یہاں پر ایک ہوگا، کیونکہ 1 پلس 0 برابر ہوتا ہے 1 کے۔ تو یہاں پر x کی ویلیو اب ایک ہو جائے گی، اور چونکہ ایک دو سے چھوٹا ہے، اس لیے دوبارہ کونسول.لاگ میں وہ دوبارہ پرنٹ ہو جائے گا۔ اس کے بعد تیسری بار یہ لوپ چلے گا، اور یہ انیشیل ایگزیکیوٹ صرف ایک بار ہوتا ہے، کوڈ کمپیوٹر ایک بار ہی انیشیلائز کرتا ہے۔


    इजर کوڈ ریڈ کرتا ہے تو بار بار وہ ایکس کی ویلیو صفر نہیں کرے گا بلکہ چونکہ اب ایکس کی ویلیو ون ہو چکی ہے، تو چیک کرے گا کہ کیا وہ ٹو سے چھوٹا ہے یا نہیں۔ چونکہ ٹو سے چھوٹا نہیں ہے، تو کوڈ یہاں پر چلنا بند ہو جائے گا۔ اگر میں اس کوڈ کو رن کرتا ہوں اور اسے سلیکٹ کرتا ہوں، جیسا کہ آپ کو کوڈر رنر کے بٹن پر نظر آ رہا ہے، تو یہاں آپ دیکھ سکتے ہیں کہ ہمارے پاس ویلیو ون آ گئی ہے، یعنی کوڈ رن ہو گیا۔ اسی طرح ہم اس کوڈ کو مزید سمجھنے کی کوشش کرتے ہیں کہ ہم 'وار'، 'ویری ایبل' کا کی ورڈ اور 'ایکس'، یہ دونوں ہم اس سینس سے...


    باہر بھی نکال سکتے ہیں، یہ میں نے کمنٹ کیا ہوا کوڈ آپ کو دکھاتا ہوں۔ کنٹرول ایف ایس ایل کرتے ہیں تاکہ ہمارا کمنٹ ختم ہو جائے۔ اور آپ دیکھ رہے ہیں کہ یہاں پر کیل کیورڈ کی شناخت میں آپ کو چلائیں گے۔ پہلے رائٹ کلک کرتے ہیں، کلئیر آؤٹ پٹ، اور یہ کوڈ میں نے سلیکٹ کرکے رن کیا ہے۔ تو یہ نتیجہ آپ کے سامنے آئے گا۔ اسے ہم تھوڑی دیر کے لیے بند کر دیتے ہیں کیونکہ ایکس کی کیورڈ ای کے کیورڈ سے اپڈیٹ نہیں ہو رہا۔ تو ویریبل ایکس کو دوبارہ سلیکٹ کرتے ہیں اور اسے دوبارہ رن کرتے ہیں۔


    ہوگا تو آپ کے پاس آؤٹ پٹ اس طرح سامنے آ رہا ہے، دیکھیں یہ آ رہا ہے 0 2 3۔ دوبارہ میں تھوڑا سا آپ کو سمجھا دیتا ہوں کہ 0 1 2 3 کیوں آ رہا ہے۔ کیونکہ یہاں ہم نے ایک variable کی ورڈ سے ایک identifier declare کیا ایک x میں، پھر اس میں zero کی value ڈالی۔ چونکہ 0 فور سے چھوٹا ہے، تو اس نے یہاں 0 پرنٹ کر دیا۔ جیسے کہ آپ دیکھ رہے ہیں، اس کے بعد zero میں one add کیا، تو x کی value ہو گئی one۔ یہ بار بار چلے گا، one چونکہ فور سے چھوٹا ہے، یہاں one پرنٹ ہو جائے گا، پھر one بڑھ کر two ہو جائے گا۔ two بھی فور سے چھوٹا ہے، تو...


    کونسول ڈاٹ لاگ یہاں پر پرنٹ کر دے گا، اس کے بعد اگر 2 چھوٹا ہوگا 3 سے تو 3 یہاں پر پرنٹ ہو جائے گا۔ جب یہ پرنٹ ہو جائے گا تو یہاں پر کونسول ڈاٹ لاگ میں ایک اور میتھڈ آ رہا ہے، اس کے بعد اگر 3 کے برابر ہوگا 4 سے چھوٹا تو یہ کوڈ اب رن نہیں ہوگا۔ اچھا، کچھ لوگوں کو یہ کوڈ سمجھنے میں مشکل ہوتی ہے، خاص طور پر فور لوپ سمجھنے میں، تو ہم اسے تھوڑا آسان کر دیتے ہیں۔ میں اسے کمنٹ کر دیتا ہوں، اور اب اس کوڈ کو آپ غور سے دیکھیں کہ اصل میں یہ کوڈ کیسے کام کرتا ہے۔ آگے یہ ویری ایبل کا جو کی ورڈ ہے اس کا...


    تو ہم نے براہِ راست ایکس کی ویلیو اوپر ہی شناخت کر کے اس کے اندر اسٹور کر دی۔ اس شناخت میں سیمی کولن جو دائیں طرف تھا، اسے ہم نے یہاں سے ہٹا دیا تاکہ آپ کو سمجھنا آسان ہو جائے، اور ہم نے اسے فور لوپ کے کوڈ بلاک کے بالکل ختم ہونے سے پہلے رکھ دیا۔ اصل میں یہ لاجیکل فور لوپ اسی طرح کام کرتا ہے کہ آپ اس میں کوئی ویلیو کسی کی ورڈ میں اسٹور کراتے ہیں، پھر اس کا ٹیسٹ کرتے رہتے ہیں، جب تک یہ ٹیسٹ صحیح (ٹریو) ہوتا رہتا ہے، یہ کوڈ بلاک چلتا رہتا ہے۔


    تو ابھی کیا ہو رہا ہے کہ ایک کی ویلیو زیرو ہے، جو کہ چار سے چھوٹی ہے، یہاں پر زیرو پرنٹ ہو جائے گا، اس کے بعد نیچے آئے گا، تو صفر پوائنٹ ایوِن جو کہ چار سے چھوٹا ہے، پھر دوبارہ کنسول ڈاٹ لگے گا اور پرنٹ کرے گا ایک پوائنٹ برابر دو۔ پھر جب فور آئے گا تو فور کی ویلیو پرنٹ نہیں ہوگی۔ اگر میں اس کو لکھ کر کلئیر آؤٹ پٹ کرتا ہوں اور یہ کوڈ آپ کو رن کر کے دکھاتا ہوں، تو اس کا رزلٹ آنا چاہیے آؤٹ پٹ میں 0 1 2 3، جو کہ پچھلے والے جیسے ہی ہے۔ تو میں سمجھتا ہوں کہ اس سے آپ کو فور لوپ کو سمجھنے میں، یا پرگرامینگ کے کانسپٹ کو تھوڑا کلئیر کرنے میں مدد ملے گی۔


    تھوڑی سی مدد ملے گی، بہت شکریہ دیکھنے کے لیے۔



  • Understanding the CONST keywork in ES66:42

    اس ویڈیو میں ہم بات کریں گے کانسٹینٹ ویریبل کے بارے میں، جو کہ JavaScript میں کانسٹینٹ کے ذریعے ڈیکلیر کیا جاتا ہے۔ ہم کانسٹینٹ کو `const` کیورڈ سے تعریف کرتے ہیں، اور اس کا مطلب یہ ہوتا ہے کہ جو ویریبل `const` سے ڈیکلیر کیا جائے، اسے دوبارہ ڈیکلیر یا ری اسائن نہیں کیا جا سکتا، اور نہ ہی اس کی ویلیو کو کسی طرح سے بدلا جا سکتا ہے۔ تو آپ سب سے اوپر دیکھ سکتے ہیں کہ یہاں `const` لکھا ہوا ہے، اور ہم نے کہا `goodMan = خالد بن ولید`۔ اگر میں اسے دوبارہ ری اسائن کرنے کی کوشش کروں گا اسی کیورڈ کے ساتھ، تو یہ ایرر دے گا۔


    اگر میں اس کو ہائی لائٹ کر کے یہ کوڈ رن کرتا ہوں تو آپ نیچے اس کا آؤٹ پٹ دیکھ سکتے ہیں کہ ٹائپ ایرر آئے گا کیونکہ ہم نے اس شناختی نام کو دوبارہ ویلیو دینے کی کوشش کی ہے۔ یعنی ہم نے ایک کانسٹینٹ ویری ایبل کو دوبارہ اسائن کرنے کی کوشش کی ہے، اس لیے ٹائپ ایرر آ گیا۔ ٹھیک ہے؟ کانسٹینٹ اس جگہ استعمال کریں جہاں آپ چاہتے ہوں کہ پورے کوڈ میں یہ خاص شناختی نام نہ بدلے، نہ دوبارہ اسائن ہو، اور نہ ہی چینج ہو۔ جب بھی آپ کانسٹینٹ لکھیں، یہی مقصد ہوتا ہے۔


    اپنے کوڈ میں بہتر طریقہ یہی ہے کہ کنسٹینٹ کو بڑے حرفوں میں لکھیں، اگر وہ دو الفاظ کا کنسٹینٹ ہو تو دونوں کے درمیان ایک انڈر اسکور بھی لگا دیں۔ جیسے "گڈ" اور "مین" دو الفاظ کا کنسٹینٹ ہے، تو میں نے اسے بڑے حرفوں میں لکھا ہے اور اس کے نیچے ایک اور کنسٹینٹ بھی ڈیفائن کر دیا ہے۔ اب اگر میں اسے کمپئر کرتا ہوں کنسٹینٹ کو "لیٹ" کے کی ورڈ سے، تو "لیٹ" کا کی ورڈ وہ ہے جس سے ہم جو بھی ویری ایبل ڈیفائن کرتے ہیں، اسے دوبارہ اسائن کر سکتے ہیں لیکن دوبارہ ڈیفائن (ڈیکلئیر) نہیں کر سکتے۔ اسائن اور ڈیکلئیر کرنے میں فرق ہوتا ہے۔ دوبارہ ڈیکلئیر کرنے کا مطلب ہوتا ہے کہ میں...


    اگر میں اس کے نیچے دوبارہ let لگا دوں تو یہ والا کام ہم let کے کی ورڈ میں نہیں کر سکتے یعنی یہاں اگر میں اسے رن کروں گا تو پھر سے ایرر آ جائے گا۔ آپ دیکھ سکتے ہیں میں ری ڈیکلئریشن کر رہا ہوں، کس کی؟ good man کی، جو پہلے ہی ڈیکلئیر ہو چکی ہے۔ یعنی یہ پہلے ہی ڈیکلئیر ہو چکا ہے۔ لیکن ہم اسے اپڈیٹ ضرور کر سکتے ہیں، اور وہ اس طرح کہ let کا کی ورڈ ہٹا دیں۔ ہم ایسا کرتے ہیں، clear output اور اسے رن کرتے ہیں۔ تو آپ دیکھ رہے ہیں کہ جو assignment تھی اس variable کی، اس value کی۔


    آئیڈینٹیفائر میں وہ ری اسائن ہو گئی ہے یا اپڈیٹ ہو گئی لیکن ڈکلئیر نہیں ہوئی، تو لیٹ کے کی ورڈ کے ذریعے جو ہم شناخت کر سکتے ہیں، مطلب نہ تو اس طریقے سے ہو سکتا ہے اور نہ ہی اگر میں اس کے پیچھے ایک کانسٹنٹ کا ورڈ دوبارہ لکھ دوں۔ اس سینس میں بھی ایرر جنریٹ کرے گا۔ ہم اسے کلئیر آؤٹ پٹ کرتے ہیں اور اسے دوبارہ چلا کر دیکھتے ہیں۔ تو دیکھیں یہ ری ڈکلئیر بھی نہیں کرے گا، یہاں بھی ہمیں کچھ نہ کچھ پرابلم کریئیٹ کر کے دکھائے گا، سنٹیکس ایرر دکھا رہا ہے۔ آئیڈینٹیفیکیشن ہٹا دیتا ہوں کانسٹنٹ کے کی ورڈ کے ذریعے۔


    میں اسے کلئیر آؤٹ پٹ دیتا ہوں اور دوبارہ اسے رن کرتا ہوں، رن کوڈ کے ذریعے۔ تو آپ دیکھ سکتے ہیں کہ نیچے جو آؤٹ پٹ آ رہا ہے وہ ٹائپ ایرر ہے: "اسائنمنٹ ٹو کانسٹنٹ ویری ایبل"۔ اوکے، یہاں تک آپ کو سمجھ آ گیا ہوگا۔ میں اسے تھوڑا مزید واضح کر دیتا ہوں کہ کانسٹنٹ اصل میں لیٹ کیورڈ کی ایک اپڈیٹڈ فارم ہے۔ جیسا کہ آپ کو پچھلی ویڈیو میں بتایا گیا تھا کہ لیٹ کیورڈ کے ذریعے آپ بلاک لیول کا کوڈ لکھ سکتے ہیں، جس میں بلاک لیول کے اوپر ایک نیا کیورڈ اصل میں اسائن ہو جاتا ہے۔ تو ابھی آپ یہاں دیکھ رہے ہیں کہ...


    ہم نے یہاں لکھا ہے ایک کانسٹنٹ ہے "گڈ مین خالد بن ولید" اور ایک if statement ہے جو کہ true ہو چکی ہے، اگر true ہوگی تو obviously چلے گی۔ اس میں پھر سے "گڈ مین" کا جو keyword ہے، اسے ہم نے دوبارہ استعمال کیا ہے، کانسٹنٹ کے ذریعے ہی کیا ہے اور اس میں نئی value assign ہونی چاہیے جیسا کہ پہلے assign ہو چکی ہے، جیسا کہ ہم اوپر دیکھ چکے ہیں۔ تو یہاں error generate ہونا چاہیے کیونکہ یہ ایک طرح کی redeclaration ہو رہی ہے "گڈ مین" کا identification کانسٹنٹ کے keyword کے ذریعے value assign کی گئی ہے۔ "گڈ مین" کا identification۔ اس پورے کوڈ کو میں run کرتا ہوں، run code تو...


    آپ دیکھیں گے یہ تو کانسٹنٹ سب سے پہلے گڈ مین کے شناخت میں ٹرو تھی تو عمار بن یاسر اس کی ورڈ میں سیو ہوا اور کنسول ڈاٹ لاک کے ذریعے ہم نے عمار بن یاسر کو یہاں پر پرنٹ کروایا۔ اس کے بعد جب یہ بلاک لیول کا کوڈ ختم ہو گیا تو اس کنسول ڈاٹ لاگ نے جو یہ گڈ مین پرنٹ کرنا تھا وہ گلوبل والا کرنا تھا، یہاں سے اٹھا کے نہیں لانا تھا، بلاک لیول کا پرنٹ نہیں کرنا تھا، اس لیے اس نے خالد بن ولید پرنٹ کیا۔ اور یہ جو بلاک لیول کا کوڈ تھا اس نے جو ایک کی ورڈ یا ویرئیبل پرنٹ کرنا ہے وہ گلوبل اسکوب کا نہیں کرنا بلکہ اس کرلی...


    بریکٹس کے درمیان یا اس کوڈ بلاک کے اندر جو کوڈ ہمارے پاس ہے، اگر وہاں گڈ مین ڈیفائن ہوا ہے تو یہ چلے گا ورنہ نہیں چلے گا۔ دیکھنے کا بہت شکریہ، امید ہے یہ ویڈیو آپ کو کانسٹنٹ کے تصور کو سمجھنے اور اسے ایکما اسکرپٹ 6 میں استعمال کرنے میں بہت مدد دے گی۔



  • How to mutate an array declared with CONST ES63:03

    اس ویڈیو میں ہم بات کریں گے اُس ویری ایبل کی میوٹیشن کے بارے میں جو کہ کانسٹنٹ کی ورڈ سے ڈکلئیر کیا گیا ہے۔ تو یوں سمجھو کہ جب آپ کسی ویری ایبل میں تبدیلی کرتے ہیں، جیسے کہ سٹرنگ یا نمبرک آبجیکٹ کی بات ہو، یا پھر ایک سنگل ویری ایبل کی، تو یہ چیزیں میوٹ ایبل رہتی ہیں۔ لیکن جب بات آتی ہے ایرے یا آبجیکٹ کی، تو وہ بھی میوٹ ایبل ہوتے ہیں۔ مثال کے طور پر، یہاں میں نے کانسٹنٹ کی ورڈ سے ایک ایرے کو ڈیکلئیر کیا ہے، اگر میں اسے دوبارہ اسائن کرنے کی کوشش کروں گا تو یہاں ایرر آ جائے گا۔ یہ خاص بات ہے۔

    جب میں نے یہاں پر "use strict" استعمال کیا ہوا ہے تو میں آپ کو چل کے دکھاتا ہوں۔ دیکھیے یہاں پر میں نے "const" کیورڈ سے ایک آئیڈینٹیفائر میں ایک ارے متعارف کرائی ہے، اور اسی آئیڈینٹیفائر سے اب میں اسے استعمال کرتا ہوں۔ سلیکٹ کریں، رائٹ کلک کریں، اور "Run Code" کریں، اور آپ نیچے دیکھیں گے کہ یہاں پر یہ آپ کو ایک ایرر شو کرے گا، "TypeError: Assignment to constant variable" یعنی کہ ہم ایک نئی ارے کو اسائن کر رہے ہیں اس اسائنمنٹ آپریٹر کے ذریعے ایک کانسٹنٹ ویریبل میں۔ یہ ویریبل کانسٹنٹ ہے، تو ایسا نہیں ہو سکتا۔ لیکن جو یہ آپ ارے کے ایلیمینٹس دیکھیں۔

    انفرادی عناصر کو ضرور ری اسائن کیا جا سکتا ہے چاہے وہ کانسٹینٹ کے کی ورڈ کے ذریعے ویری ایبل کی شناخت کیوں نہ ہو۔ اس ری اسائنمنٹ کی وجہ سے ویلیو 30000 ہو جاتی ہے۔ اب میں کوڈ کو رن کرتا ہوں تو آپ دیکھ سکتے ہیں کہ ہم ایک ایرے کو میوٹ کر رہے ہیں جو اصل میں کانسٹینٹ کے کی ورڈ سے یوز کیا گیا تھا۔ کوڈ رن کرنے کے بعد یہاں دیکھیں، اس نے ایک ایرے جنریٹ کر دیا ہے جو کہ اصل میں میوٹڈ ایرے ہے۔ تو اس طرح آپ چیزوں میں تبدیلی لا سکتے ہیں چاہے وہ کانسٹینٹ کے کی ورڈ کے ذریعے اسائن کی گئی ہوں۔

  • How to prevent object mutation3:55

    اس ویڈیو میں ہم بات کریں گے کہ آبجیکٹ کی تبدیلی کو کیسے روکا جائے۔ یعنی ہم کسی بھی آبجیکٹ کو ایسے کیسے بنا سکتے ہیں کہ اسے بدلا نہ جا سکے۔ پچھلی ویڈیوز میں ہم نے "const" کی ورڈ کے بارے میں بات کی تھی، اور "const" کی ورڈ سے ہم نے دیکھا تھا کہ یہ ویریبل کی شناخت کو تو تبدیل ہونے سے نہیں بچا سکتا۔ مطلب یہ ہے کہ اگرچہ میں نے آبجیکٹ کو "const" سے ڈکلئیر کیا ہے، پھر بھی میں اس میں تبدیلی کر سکتا ہوں، یعنی اسے ایڈٹ کر سکتا ہوں۔ تو اگر میں چاہتا ہوں کہ...

    اس آبجیکٹ کا جس کا نام ہی آبجیکٹ ہے، اگر میں اسے پورے طریقے سے نان ایڈیٹیبل بنا دوں، یعنی اس کے ہر ایڈیٹ ایلیمنٹ کو نان ایڈیٹیبل کر دوں، تو اس آبجیکٹ میں نہ کوئی پراپرٹی ایڈ ہو سکے گی، نہ ڈیلیٹ ہو سکے گی، اور نہ اپڈیٹ ہو سکے گی۔ اس کے لیے جاوا اسکرپٹ میں ایک پراپرٹی ہوتی ہے جسے ہم کہتے ہیں freeze۔ سب سے پہلے ہم اس میں آبجیکٹ کا نام لکھتے ہیں اور پھر اسے freeze کر دیتے ہیں۔ اس کو لکھنے کا طریقہ یہ ہے کہ آپ لکھیں Object.freeze اور یہاں پر آپ اپنا ویریئبل آئیڈینٹیفائر لکھ دیں جو آبجیکٹ کا ہو، جس سے اس کی تمام پراپرٹیز...

    فریز ہو جاتی ہے، فریز کا مطلب ہے کہ اب اس میں کچھ بھی ایڈ نہیں ہو سکتا، نہ کچھ اپڈیٹ ہو سکتا ہے، نہ کچھ ڈیلیٹ ہو سکتا ہے۔ تو فریز کرنے کے بعد اگر میں اس آبجیکٹ کے پہلے ایلیمینٹ کو اپڈیٹ کرنے کی کوشش کروں، مثلاً اسے "ہیلتھ" کر دوں، تو فریز کی وجہ سے یہ نہیں ہوگا۔ اچھا، میں ابھی اسے کمنٹ کرتا ہوں اور آپ کو دکھاتا ہوں جب یہ کوڈ رن ہوگا تو آپ کنسول ڈاٹ لاگ میں دیکھ سکیں گے کہ اس آبجیکٹ نام کے کانسٹنٹ ویریبل کو یہاں پر پرنٹ کیا جا رہا ہے۔ پہلے ایلیمینٹ کا نام "لائف پرپز سیکنڈ واز سوسائٹی" ہے اور یہاں وہ دوسرا جو ہے "وسوسائٹی" دکھا رہا ہے۔

    پہلی زندگی کا مقصد یہاں تھا، ہم نے اسے اپڈیٹ کر دیا تو یہ پہلی صحت بن گیا، دوسرے کو ہم نے اپڈیٹ نہیں کیا تو یہ دوسرا سوسائٹی ہی رہا، اور تیسرے نمبر پر ہم نے ایک اور پراپرٹی شامل کروا دی جس کا نام ہے نیو پراپرٹی اور اس کا نام ہم نے دولت رکھ دیا۔ تو اب یہ تینوں چیزیں اپڈیٹ ہو رہی ہیں۔ ابھی بات ہو رہی تھی کہ ہم نے فریز جو کی ورڈ ہے، اسے بھی استعمال نہیں کیا، فریز کا جو طریقہ ہے، اسے استعمال نہیں کیا۔ اگر میں اسے ان کمنٹ کرتا ہوں اور اس کوڈ کو دوبارہ رن کرتا ہوں تو آپ دیکھیں گے کہ یہ دونوں ویلیوز جو اوپر آپ کو نظر آ رہی ہیں، یہ فریز ہو جائیں گی اور نہیں ہم...

    ہم پہلی ویلیو کو نہ تو اپڈیٹ کر سکتے ہیں اور نہ ہی نئی ویلیو ایڈ کر سکتے ہیں۔ میں رائٹ کلک کر کے "رن کوڈ" کرتا ہوں تو آپ دیکھیں گے کہ نیچے جو پرنٹ ہو رہا ہے وہ "فرسٹ از لائف پرپز" ہے۔ یہاں ہم نے اس کو اپڈیٹ کرنے کی کوشش کی تھی، لیکن آپ دیکھ رہے ہیں کہ فریز میتھڈ کی وجہ سے اپڈیٹ نہیں ہو سکا۔ اور دوسری جو ہے وہ "سوسائٹی" ہے، دوسری "سوسائٹی"۔ اور یہ تیسری پراپرٹی جو ہم نے ایڈ کرنے کی کوشش کی، وہ بھی نہیں ہوئی کیونکہ یہاں فریز میتھڈ نے اسے فریز کر دیا ہے۔

  • Arrow functions anonymous functions4:32

    اس ویڈیو میں ہم بات کریں گے کہ ایرو فنکشنز اور انونیمس فنکشنز کیسے بنائے جاتے ہیں۔ سب سے پہلے ہم یہ سمجھیں گے کہ ان کی ضرورت کب پڑتی ہے۔ اکثر ایسا ہوتا ہے کہ آپ کوئی فنکشن بناتے ہیں جو صرف ایک آرگیومنٹ کے طور پر کسی دوسرے فنکشن کے اندر استعمال ہوتا ہے۔ چونکہ وہ فنکشن صرف ایک بار استعمال ہوتا ہے اور آپ اسے باہر سے بار بار کال نہیں کرتے، اس لیے اسے نام دینے کی ضرورت بھی نہیں ہوتی۔ اس طرح کا فنکشن بغیر نام کا ہوتا ہے، جسے انونیمس فنکشن کہتے ہیں۔ آپ کو معلوم ہوگا کہ عام طور پر جب ہم فنکشن بناتے ہیں...

    ہم فنکشن کو ڈیکلئیر کرتے ہیں یا میں آپ کو فنکشن لکھ کے دکھاتا ہوں، تو یہ اس طرح ہوتا ہے کہ آپ لکھتے ہیں کی ورڈ "فنکشن"، پھر فنکشن کو آپ کوئی نام دیتے ہیں، مثلاً کی بورڈ، اس کے بعد آپ لکھتے ہیں پیرینتھیسز، اور پھر آپ کوڈ بلاک لکھتے ہیں یعنی کرلی بریکٹس کے اندر جو بھی کوڈ ہوتا ہے، اسے ہم کوڈ بلاک کہتے ہیں۔ تو جب بھی آپ اس نام کو کال کریں گے، تو یہ فنکشن چل جائے گا۔ تو میں نے یہ فنکشن کی ورڈ سے ڈیکلئیر کیا ہے، یہ فنکشن کی ڈیکلریشن ہے۔ تو جب بھی میں اس فنکشن کو کال کروں گا، تو یہ والی سٹیٹمنٹ دوبارہ چل جائے گی، بس فنکشن کا نام لکھنا ہوگا۔

    اور سیمی کولن سے، یہ طریقہ ہوتا ہے۔ دوسرا طریقہ یہ ہے کہ ہم فنکشن ڈیکلئر کرنے کے لیے سیدھا فنکشن کا کی ورڈ لکھتے ہیں اور اسے ہٹا دیتے ہیں، یعنی سیدھے اسی طرح لکھتے ہیں جیسے یہاں کیا گیا ہے۔ باقی چیزیں بالکل ویسی ہی رہتی ہیں، کلی بریسز ہوتے ہیں اور ان کے درمیان کوڈ بلاک ہوتا ہے، لیکن ہم اس فنکشن کو ایک نیم ویریبل میں اسائن کر دیتے ہیں یا اسٹور کر لیتے ہیں۔ تو بعد میں جب بھی ہمیں اس فنکشن کو کال کرنا ہوتا ہے، تو ہم اسے اسی طرح کال کرتے ہیں۔ تو یہ وہی طریقہ ہے جیسا کہ اوپر آپ نے دیکھا۔

    دیکھا لیکن یہاں ہم کیا کرتے ہیں کہ ہم فنکشن کا نام فنکشن کے کی ورڈ کے بعد لکھتے ہیں اور یہاں ہم فنکشن کا نام نہیں لکھ رہے بلکہ فنکشن کی کی ورڈ سے پہلے پورے فنکشن کو ایک نئے ویری ایبل یعنی آئیڈینٹیفائر میں اسٹور کر رہے ہیں جس کا نام ہے نیم فنکشن۔ تو اگر مجھے اس فنکشن کو مزید چھوٹا کرنا ہو تو میں کیا کروں گا؟ چونکہ مجھے اسے کوئی نام نہیں دینا، اس لیے میں کرلی بریسز لوں گا اور پھر اس کے بعد ایرو بنا دوں گا۔ ایرو آپ نے دیکھا، اسی طرح ہوتا ہے۔ یہ ایکوال ٹو کا سائن ہے اور یہ گریٹر دین کا سائن ہے۔ اس کے بعد پورا کوڈ لکھوں گا۔

    اسے ایرو فنکشن کہتے ہیں۔ جب آپ ایرو فنکشن ڈیفائن کرتے ہیں تو یہ عام طور پر بہت چھوٹا ہوتا ہے۔ تو جہاں بھی آپ کو یہ سٹیٹمنٹ نظر آئے اس طرح سے، سمجھ جائیے کہ یہ ایرو فنکشن ہے۔ بس یہ ایرو فنکشن ہے، اس کا کوئی نام نہیں ہوتا اور نہ ہی فنکشن کا کوئی کی ورڈ ہوتا ہے۔ ایرو فنکشن کی خاص بات یہ ہے کہ اس کے اندر جو ویلیو رٹرن ہوتی ہے وہ بذات خود ہوتی ہے۔ جب آپ عام فنکشن لکھتے ہیں تو آپ کو لازمی رٹرن کروانا پڑتا ہے۔

    کچھ نا کچھ اس میں رٹرن کی ویلیو بذاتِ خود ہوتی ہے، تو مثال کے طور پر اگر مجھے اس فنکشن کو مزید کن سائز یا مزید چھوٹا کرنا ہو تو میں کیا کروں گا؟ یہاں میں نے declare کیا ہے، آپ اس کوڈ کو غور سے دیکھیں۔ تو یہ constant identification میں، میں کیا کر سکتا ہوں؟ اسے مزید چھوٹا اور کن سائز کر دیتے ہیں۔ arrow function میں میں اسے سیدھا لکھ سکتا ہوں۔ اب دیکھیں ہم نے کیا eliminate کیا ہے؟ اس فنکشن میں ہم نے function کا keyword نہیں لکھا، function کا کوئی نام نہیں لکھا۔ اسی طرح جو brackets آپ دیکھ رہے ہیں، کلی...

    بروسس، ہم نے ایلیمینٹ ایلیمینیٹ کر دیے پورے اور رِٹرن کا کی ورڈ نہیں لکھا۔ یہ ہمارا ٹوٹل فنکشن ہے، جو آپ کے سامنے ہے۔ اب اسے دیکھیں اور اس فنکشن کو دیکھیں، کتنے سارے لیٹرز کا فرق ہے۔ آپ کو یہ کوڈ پڑھنا آسان بھی ہے، لکھنا بھی آسان ہے، اور اسے مینیج کرنا بھی آسان ہے۔

  • Parameters in Arrow Functions5:41

    اس ویڈیو میں ہم ایرو فنکشن کے بارے میں بات کریں گے اور ایرو فنکشن میں ہم پیرامیٹرز کو کس طرح لکھ سکتے ہیں۔ پچھلی ویڈیوز میں ہم نے کہا تھا کہ ایرو فنکشنز کیسے بنائے جاتے ہیں اور یہ عام فنکشنز کے مقابلے میں کیوں فائدہ مند ہیں۔ ایرو فنکشن بنانے کا طریقہ یہ تھا کہ سب سے پہلے ہم اس کے اندر پیرینتھیسز لیتے ہیں، پھر ایک ایرو لگاتے ہیں جو برابر کے نشان اور greater than کے نشان کی طرح ہوتا ہے، اور اس کے بعد ہم کوڈ بلاک لکھتے ہیں، یعنی جو کچھ بھی curly braces کے اندر آئے۔ ہم ان سب باتوں پر پہلے ہی بات کر چکے ہیں۔


    یہ جو کوڈ بلاک ہوتا ہے اسے ایرو فنکشن کہتے ہیں۔ یہ ایک طریقہ ہے فنکشن بنانے کا، جو کہ ان نیم یا اینونیمس یعنی بغیر نام کے ہوتے ہیں۔ ہم اس لیے بناتے ہیں کیونکہ کبھی کبھار ہمیں کوئی فنکشن دوسرے فنکشن کے اندر آرجومنٹ کے طور پر استعمال کرنا پڑتا ہے، یا پھر کسی آبجیکٹ کے میتھڈ میں فنکشن استعمال کرنا ہوتا ہے۔ مطلب یہ کہ ایسے فنکشن جو ہمیں بار بار کال کرنے یا بار بار چلانے کی ضرورت نہ پڑے، انہیں ایرو فنکشن کہتے ہیں۔ اور اس میں ایک خاص بات یہ بھی ہے کہ یہ بذات خود رزلٹ واپس کر دیتا ہے۔


    ورنہ نیم فنکشنز کے اندر ہم ریٹرن کو کال کرتے ہیں، یہ بائے ڈیفالٹ ریٹرن کو بھیج دیتا ہے۔ تو اگر ہمیں اس میں پیرامیٹر دینا ہو تو یہ جو پیرینتھیسز آپ دیکھ رہے ہیں، اس کے اندر ہم کوئی پیرامیٹر ایڈ کر دیتے ہیں۔ مثال کے طور پر میں لکھتا ہوں پیرامیٹر اوکے۔ اور آپ کو اچھی طرح پتہ ہے کہ جب فنکشن کے اندر ہم کوئی ویلیو ڈالتے ہیں تو اسے پیرامیٹر کہتے ہیں، اور جب اسی فنکشن کو ہم کال کرتے ہیں اور اس میں وہی ویلیو دیتے ہیں تو اسے آرگیومنٹ کہتے ہیں۔ تو مثال کے طور پر، اگر میں ریگولر فنکشن کے بارے میں کہوں۔


    یہ فنکشن اور فنکشن کا نام لکھوں، نام اور پیرن تھیس اوپن کلوز کرو، کالی بریکٹس، اور اس کے اندر میں لکھ دوں "نیو ون"۔ جو آپ دیکھ رہے ہیں یہ پیرامیٹرز ہیں، یہ فنکشن کا نام ہے، یہ فنکشن کا کی ورڈ ہے۔ تو جب بھی میں اس نام والے فنکشن کو اپنے کوڈ میں کال کروں گا، کال کرنے کا طریقہ یہ ہوگا کہ میں فنکشن کا نام لکھوں گا، پھر پیرن تھیس کے اندر سی می کالن لگاؤں گا۔ اور اگر میں اس فنکشن کے اندر کوئی ایسی ویلیو ڈالنا چاہوں جو "نیو ون" کو بدل دے، اور اس کی بنیاد پر یہ کوڈ بلاک چلے، تو اسے ہم...


    کہتے ہیں آرگومنٹز، تو ہم نے بات کی فنکشن کی اور فنکشن کے پیرامیٹرز کی۔ اب جب ہم ایرو فنکشنز میں پیرامیٹرز ایڈ کرتے ہیں تو یہاں ہم پیرامیٹر ایڈ کر دیتے ہیں، جیسا کہ آپ یہاں دیکھ رہے ہیں۔ یہ فنکشن ہم نے ایرو فنکشن کی طرح ڈیکلئیر کیا ہوا ہے اور اس کے بعد ہم نے یہ بھی بات کی تھی کہ اگر اس کے اندر ڈائریکٹلی کوئی ویلیو جنریٹ کرنی ہو تو کرلی بریکٹس کی بھی ضرورت نہیں رہتی۔ تو یہ پیرامیٹر میں تقسیم کروں گا، ڈیوائیڈ بائے ٹو، تو نتیجہ آ جائے گا۔ ایک آرگومنٹ میں ایک ویریبل ہے، ویریبل کی شناخت ہے، جسے میں نے کال کیا ہے اور میں نے...


    آرگیومنٹ پاس کیا 50، ہمارا کوڈ 'ڈویڈر' نام کے فنکشن کو ڈھونڈے گا اور اس کے اندر آرگیومنٹ کے طور پر یہاں 50 ایڈ کر دے گا۔ اور یہاں نمبر برابر ہو جائے گا 50 کے۔ اور نمبر چیک کریں تو برابر ہے 50 کے۔ 50 ڈویڈ بای 2 ہوتا ہے 25، تو یہاں نتیجہ آ جائے گا۔ اس نے نتیجہ جنریٹ کر کے دکھا دیا۔ اب اگر ہمارے پاس یہ پیرامیٹر صرف ایک ہو تو ہم یہ بریکٹس بھی بائی پاس کر سکتے ہیں اور سیدھے نمبر لکھ سکتے ہیں۔ آپ دیکھ رہے ہیں یہاں میں نے پیرامیٹر کو بریکٹس میں لکھا ہے اور یہاں بریکٹس کے بغیر۔


    نتائج ہمارے پاس تقریباً ویسے ہی آنی چاہیے۔ میں اسے سلیکٹ کرتا ہوں۔ یہاں اس بار جب میں نے فنکشن کو کال کیا ہے تو اس میں کچھ اور ویلیو دی گئی ہے۔ تو رائٹ کلک کرکے اسے رن کرتے ہیں، رن کوڈ۔ اور اس کے بعد آپ دیکھیں گے کہ کیا ویلیو جنریٹ ہوتی ہے، 10۔ 10 اس لیے آ رہی ہے کیونکہ یہاں میں نے آرگیومنٹ پاس کیا ہے ڈیوائڈر نام کے فنکشن میں 20۔ تو فنکشن ڈیوائڈر یہ تلاش کرے گا اور اس کے اندر جو یہ پیرامیٹر ہے، اسے 20 سے ریپلیس کرے گا۔ نمبر equal to 20، 20 ڈیوائیڈ بائے 2 یعنی 10۔ یہاں آپ دیکھ رہے ہیں اسی طرح جب...


    اگر آپ ایرو فنکشن کے اندر ایک سے زیادہ پیرامیٹرز دینا چاہیں تو آپ پیرینتھیسس کے اندر کاما کے ذریعے انہیں دے دیتے ہیں اور انہیں کوئی نام وغیرہ نہیں دیتے۔ مثال کے طور پر، میں یہاں ایک فنکشن 'آرگیومنٹ' کو کال کر رہا ہوں اور آرگیومنٹ کے طور پر 50 اور 5 پاس کر رہا ہوں۔ 50 ایک ویری ایبل بن جائے گا جس کا نام نمبر ہوگا، اور 'ف' میں نمبر کو انٹیجر میں ڈیوائیڈ کیا جائے گا۔ یعنی 50 ڈیوائیڈ بائے 5 برابر ہونا چاہیے 10 کے۔ اگر میں اس کو رن کروں کوڈ کو تو آپ دیکھیں گے کہ اس کوڈ کے بعد ہم کیا پاس کرتے ہیں۔


    ویلیو بنتی ہے 10 ویلیو بنتی ہے، تو مجھے امید ہے کہ یہ ویڈیو آپ کو ایرو فنکشن میں پیرامیٹرز کے کانسپٹ کو سمجھنے میں بہت مدد دے گی۔ دیکھنے کے لیے بہت شکریہ۔



  • Defult Parameters for Functions2:02

    اس ویڈیو میں ہم فنکشنز کے ڈیفالٹ پیرامیٹرز کے بارے میں بات کریں گے۔ پچھلی ویڈیو میں آپ نے دیکھا تھا کہ ایرو فنکشنز کیسے بناتے ہیں، اب ہم ڈیفالٹ پیرامیٹرز پر بات کریں گے۔ یہاں آپ دیکھ سکتے ہیں کہ ہم نے const کیورڈ سے ایک ویریئبل بنایا ہے جس کا نام ہے order، اور اس کے بعد ہم نے ایک ایرو فنکشن ڈیفائن کیا ہے جسے آپ چیک کر سکتے ہیں۔ اس فنکشن میں ایک پیرامیٹر ہے language، اور language کی ایک ڈیفالٹ ویلیو بھی دی گئی ہے۔


    ہم نے یہاں پر ES6 میں ڈیفالٹ پیرامیٹرز استعمال کیے ہیں، تو جب بھی ہم اس "order" نام کے فنکشن کو کال کریں گے، جیسے کہ ہم نے یہاں کال کیا ہے، اور اس میں کوئی آرگیومنٹ پاس نہیں کریں گے یا آرگیومنٹ undefined ہوگا، تو یہ ڈیفالٹ پیرامیٹر خود بخود آ جائے گا۔ اگر ہم آرگیومنٹ پاس کریں، جیسا کہ آپ دیکھ رہے ہیں کہ ریاکٹ جے ایس کا آرگیومنٹ دیا گیا ہے، تو یہ ڈیفالٹ پیرامیٹر ختم ہو جائے گا اور language کی ویلیو "React JS" ہو جائے گی۔ میں آپ کو دونوں کوڈز رن کر کے دکھاتا ہوں تاکہ زیادہ واضح طور پر سمجھ آ سکے کہ یہاں کیا ہو رہا ہے۔


    ہم کوڈ چلاتے ہیں اور نیچے آؤٹ پٹ میں آپ دیکھ سکتے ہیں کہ پہلا console.log جو ہے وہ یہ ریزلٹ ہے جو آپ دیکھ رہے ہیں "Learn React"۔ اس کا console.log آرڈر کے فنکشن میں چلایا گیا ہے اور React کا آرگومنٹ پاس کیا گیا ہے جو کہ language نام کے ویریبل میں آیا ہے۔ تو پیرامیٹر ہمارا بن گیا ہے "رید" جسے "ری" کہا جا سکتا ہے، یعنی "Learn React"۔ اور دوسرا console.log جو یہاں فنکشن کے چلنے پر آیا ہے، اس میں ڈیفالٹ پیرامیٹر استعمال ہوا ہے جو "ES6" ہے۔ تو یہاں آپ "Learn ES6" دیکھ سکتے ہیں۔



  • Rest Parameter with Function Parameter3:03

    اس ویڈیو میں ہم ریسٹ پیرامیٹرز کے بارے میں بات کریں گے۔ ریسٹ پیرامیٹرز اس لیے استعمال کرتے ہیں تاکہ ہمارا فنکشن زیادہ لچکدار بن جائے، یعنی ہم اس میں ایک سے زیادہ ویریبلز شامل کر سکیں یا ان کا استعمال کر سکیں۔ تو جب آپ ریسٹ پیرامیٹر استعمال کرتے ہیں تو آپ پیرامیٹرز ڈیکلئیر کرنے سے پہلے تین ڈاٹس لگا دیتے ہیں۔ ہم نے یہاں فنکشن کا کی ورڈ استعمال کیا ہے، جو کہ فنکشن کی پہچان ہے، اور یہ ویلیو واپس کر رہا ہے جو آپ کو دکھائی دے رہی ہے۔ تو یہاں پیرامیٹرز کی لمبائی کے علاوہ مزید آرجومنٹس ہیں، اس کا مطلب یہ ہے کہ...


    اس ریس پیرامیٹر میں ہم جتنے بھی آرگیومنٹس ڈالیں گے، یہ فنکشن ہمیں واپس دے گا ان پیرامیٹرز کی لمبائی یعنی ان کی تعداد۔ تو یہاں دیکھ رہے ہیں کہ ہم نے console.log کے ذریعے اس rest پیرامیٹر والے فنکشن کو کال کیا ہے، اور اس میں ہم نے چار ویلیوز دی ہیں۔ آپ دیکھ سکتے ہیں کہ یہ کتنا زیادہ فلیکسیبل ہو گیا ہے۔ ورنہ ہمیں ایسے پیرامیٹرز کے لیے چار آرگیومنٹس ڈیفائن کرنے پڑتے تھے، اور ساتھ ہی چار پیرامیٹرز بھی یہاں ڈیکلئر کرنے پڑتے تھے، لیکن اب ہم جتنے چاہیں یہاں دے سکتے ہیں۔


    آپ ارگومنٹ ڈیکلئیر کر سکتے ہیں، یہ سارے ڈارک ارگومنٹ یہاں جا کے اس پیرامیٹرز نام کے ریسٹ پیرامیٹر کا پیرامیٹر یا ویری ایبل بن جائیں گے اور یہاں پر پرنٹ ہو جائیں گے۔ یہ ریسٹ پیرامیٹر ہم نے کنسول ڈاٹ لاگ کے ذریعے دوبارہ بھی یہاں کال کیا ہے اور اس کے اندر ہم نے ویلیوز ڈال دی ہیں جو آپ کے سامنے آ رہی ہیں۔ اس میں پہلی ویلیو یہاں پر سٹرنگ ہے، پھر کاما ہے، پھر نل ہے، پھر ایک ایرے ہے اور اس کے بعد ایک آبجیکٹ ہے۔ اسے رن کر کے دیکھتے ہیں کہ اس کا رزلٹ ہمارے پاس کیا آتا ہے۔ پورے کو سیلیکٹ کریں اور رائٹ کلک کر کے رن کریں۔


    کوڈ اور نیچے آؤٹ پٹ میں آپ دیکھ رہے ہیں کہ اس کا کیا نتیجہ آتا ہے۔ یہاں چار آرگیومنٹس ہیں، تو یہ پہلا نتیجہ جو سامنے آ رہا ہے، یہ کیا کر رہا ہے کہ یہ ریسٹ پیرامیٹر چل رہا ہے اور اس کے اندر چار آرگیومنٹس جا رہے ہیں، یعنی دو سے چار تک۔ تو یہاں آ رہے ہیں۔ تو یہ ریسٹ پیرامیٹر نام کا فنکشن ہمیں پرنٹ کیا کر رہا ہے کہ "دیر آر دیر آر" پیرامیٹرز کی لمبائی، ہمارے پاس دو سے چار ہے۔ تو اس نے لکھ دیا "فور آرگیومنٹ"۔ اسی طرح اس نے ان آرگیومنٹس کو بھی یہاں گنا ہے، پہلا آرگیومنٹ سٹرنگ، دوسرا آرگیومنٹ نل، تیسرا آرگیومنٹ ارے، اور...


    چوتھا دلیل ہمارے پاس چیز ہے۔



  • Spread Operator4:32

    اس ویڈیو میں ہم سپریڈ آپریٹر کے بارے میں بات کریں گے۔ آپریٹرز کے بارے میں ہم پہلے بات کر چکے ہیں کہ یہ کسی بھی دو آرگیومنٹس یا دو پیرامیٹرز یا ویریبلز کو جمع کرنے، کمپئر کرنے یا تقسیم کرنے وغیرہ کے لیے استعمال ہوتے ہیں، جیسے پلس، مائنس، اینڈ، ڈیوائیڈ۔ تو سپریڈ آپریٹر کا کیا کام ہے؟ یہ کسی بھی ارے کو اسپریڈ کر دیتا ہے یا اسے کہیں اور لے جا کے رکھ دیتا ہے۔ مثال کے طور پر، یہاں جو تین ڈاٹس آپ دیکھ رہے ہیں، اسے سپریڈ آپریٹر کہتے ہیں۔ اس کے آگے ہم نے لکھا ہے ارے، ارے کیا ہے؟ وہ ایک...


    ویری ایبل ایک کانسٹینٹ ہے اور اس ایرے کے ویری ایبل میں ویری ایبل آئیڈینٹیفائر میں یہ ایرے ہم نے ڈیفائن کیا ہوا ہے۔ تو ان تین ڈاٹس یا اسپریڈ آپریٹر کے ذریعے ہم یہ بتا رہے ہیں کہ یہ والی ایرے جو ہے، اسے آپ نے ان پلیس یہاں پر لا کر ایکسپینڈ کرنا ہے۔ تو پیچھے جو ہم نے ایک میتھڈ یوز کیا ہوا ہے، وہ میتھ فنکشن کا ایک میتھڈ میکس یوز کیا ہوا ہے۔ یہ کیا کرے گا کہ ہر دو آرگیومنٹس کو ایک دوسرے سے کمپئیر کرے گا اور ان میں جو زیادہ بڑا ہوگا وہ آؤٹ پٹ ریٹرن کر دے گا۔ تو میتھ ڈاٹ میکس یہ کرے گا اور یہ اسپریڈ آپریٹر جو آپ دیکھ رہے ہیں۔


    سکرین پر تین ڈاٹس والا y پوری ایری کو اٹھا کر یہاں لا کر پرنٹ آؤٹ کر دے گا، اور جو کچھ بھی اس کا رزلٹ آئے گا وہ ہم ایڈ یا اسٹور کر رہے ہیں۔ ایکوال ٹو (=) آپریٹر کے ذریعے، جو کہ ایک آپریٹر ہے، اسپریڈ بھی ایک آپریٹر ہے۔ یہاں ہم ایک کانسٹنٹ نام کے ویری ایبل آئیڈینٹیفائر میں اسٹور کر رہے ہیں جس کا نام ہے کانسٹنٹ، اور کیورڈ کے ذریعے میکسیمم نام کے ویری ایبل آئیڈینٹیفائر میں۔ تو جب بھی ہم اسے پرنٹ کریں گے تو یہ فنکشن کام کرے گا، اور اس ایری میں جتنے بھی آپ پیرامیٹرز دیکھ رہے ہیں وہ...


    یہاں پیرامیٹرز کو ایکسپینڈ کرنے کے بعد ہر دو پیرامیٹرز کو ایک دوسرے سے کمپئر کیا جاتا ہے، اور اس پوری ارے کی جو زیادہ سے زیادہ ویلیو ہوگی وہ یہاں پر ریٹرن کر دی جائے گی۔ اگر میں آپ کو یہ فنکشن دکھاؤں اور کنٹرول اے دباکر سب کو سلیکٹ کر کے کوڈ رن کروں تو آپ آؤٹ پٹ میں دیکھیں گے کہ یہاں 'کاسول ڈ میکسیمم کا ورڈ' پرنٹ ہو چکا ہے، اور جو زیادہ سے زیادہ کانسٹنٹ پرنٹ ہوا وہ 900 ہے کیونکہ اس پوری ارے میں جو زیادہ سے زیادہ پیرامیٹر یا انٹیجر نظر آ رہا ہے وہ 900 ہے۔ ہم یہ نہیں کر سکتے کہ اس ارے کو ہٹا دیں۔


    کیا ہم مزید کسی کانسٹنٹ کے اندر ڈال دیں کیونکہ اسپریڈ آپریٹر اس لیے کہ اسپریڈ آپریٹر وہ ان پلیس ورک کرتا ہے۔ تو مثال کے طور پر میں یوں نہیں کر سکتا کہ یہ جو ایرے ہے اس پر میں اسپریڈ آپریٹر لگا کے اسے کسی مزید کانسٹنٹ یا ویریبل میں ڈکلئیر کر سکوں۔ تو مثال کے طور پر اگر میں لکھتا ہوں یہاں پر کانسٹنٹ ایرے ٹو برابر اسپریڈ آپریٹر ایرے، اس کا مطلب ہے کہ اس ایرے کے جتنے بھی ایلیمنٹس ہیں وہ سب ایرے ٹو نام کے ویریبل یا آئڈینٹیفائر میں اسٹور ہو جانے چاہیے۔ لیکن اگر میں اس کوڈ کو رن کرتا ہوں تو یہ ایک ہمیں ایک...


    سِنٹیکس ایرر آئے گا کیونکہ ایسا نہیں ہوتا، آپ دیکھ رہے ہیں یہاں پر "کانسٹنٹ ایرو ٹو ایکول ٹو" یہ ایک غیر متوقع ٹوکن ہے جو کہ اسپریڈ آپریٹر ہے۔ ہاں، یہ ممکن ہے کہ میں اسے بریکٹ کے اندر رکھ کر اس آپریٹر کو اسٹور کر سکوں۔ "ایرو ٹو" ایک ویری ایبل آئیڈینٹیفیکیشن ہے۔ اور اس سے پہلے ہم نے ریسٹ پیرامیٹر پر بات کی تھی، دونوں میں تھوڑا سا فرق یہ ہے کہ ریسٹ پیرامیٹر زیادہ تر فنکشنز کے اندر استعمال ہوتا ہے جہاں آپ کسی ایکسپینڈ ایبل پیرامیٹرز کو ڈیفائن کر سکتے ہیں، اور اسپریڈ آپریٹر میں آپ پہلے سے موجود ارریز وغیرہ کو...


    کسی بھی InPlace یا کسی فنکشن میں اسپریڈ کر کے آپ اسے وہاں سیدھا چلا سکتے ہیں۔



  • Using Destructuring Assignment to Extract Values from an Object5:07

    اس ویڈیو میں ہم بات کرنے جا رہے ہیں کہ ہم ڈی سٹرکچرنگ اسائنمنٹ کو کیسے استعمال کر کے کسی آبجیکٹ سے ویلیوز نکال سکتے ہیں۔ جب بھی ہم میٹاف کرتے ہیں کسی کانسٹنٹ یا ویری ایبل کیورڈ کے ذریعے، جو آپ دیکھ رہے ہیں یہ ویری ایبل آئیڈینٹیفائر کلائنٹ ہے۔ چونکہ ہم نے کانسٹنٹ کا کیورڈ استعمال کیا ہے، اس لیے آسانی سے سمجھنے کے لیے ہم نے اسے کیپٹل لیٹرز میں لکھا ہے کہ یہ ویری ایبل آئیڈینٹیفیکیشن ہوتے ہیں، یعنی اس کی پہلی ویلیو انڈیکس زیرو سے ریفر کی جا سکتی ہے یا اس کی ویلیو کو انڈیکس زیرو سے ایکسٹریکٹ کیا جا سکتا ہے۔ دوسری ویلیو کو ہم...


    انڈیکس ون کہتے ہیں کہ اسی طرح سوچو، جبکہ جو آبجیکٹ ہوتا ہے وہ بھی ایک طرح کی آرے ہی ہوتی ہے، لیکن یہ نیم آرے ہوتی ہے یعنی اس کے اندر موجود ہر ویلیو کو ایک پراپرٹی یا ویری ایبل اسائن کیا ہوا ہوتا ہے۔ تو جب کبھی بھی ان آرے یا آبجیکٹ سے ہمیں کوئی ویلیو نکالنی ہوتی ہے یا حاصل کرنی ہوتی ہے تو ہم اس میں ڈاٹ نوٹیشن استعمال کرتے ہیں۔ ڈاٹ نوٹیشن یہ ہوتی ہے کہ آپ آبجیکٹ کا نام لکھتے ہیں، جیسے کہ آبجیکٹ ہے، اور اس آبجیکٹ کی پراپرٹی لکھتے ہیں، تو آبجیکٹ ڈاٹ پراپرٹی لکھیں گے۔ جب بھی یہ کوڈ رن ہوگا۔۔۔


    تو اس آبجیکٹ کی اس پراپرٹی کی ویلیو یہاں آ جائے گی اور وہ اسٹور ہو جائے گی اس اسٹور ویریبل یا اسائنمنٹ ویریبل کے ذریعے پیمنٹ میتھڈ نام کے ایک کانسٹنٹ میں۔ تو اس میں کیا ہوتا تھا کہ یہی والی پراپرٹی اسی نام کے ویریبل سے اسی کے اندر اسائن ہو گئی ہے، لیکن ہم نے ایکسٹریکٹ کر لی ہے ویلیوز کلائنٹ کے آبجیکٹ سے۔ اسی طرح یہ کلاس کے آبجیکٹ کی جو اماؤنٹ نام کی پراپرٹی ہے، اس کی جو بھی ویلیو ہوگی وہ اس کے اندر اسائن ہو جائے گی۔ تو اگر میں آپ کو یہ کوڈ رن کر کے دکھاؤں، رائٹ کلک کر کے رن، تو یہ کنسول ڈاٹ لاگ…


    یہ جو پیمنٹ میتھڈ آپ دیکھ رہے ہیں یہ آسانی کے لیے لکھا گیا ہے، اگر ہم اسے نہ بھی لکھیں تو یہ کام کرے گا، اگر میں اسے ڈیلیٹ بھی کر دوں تو یہ چلتا رہے گا۔ پیمنٹ میتھڈ یہاں پر لکھ دیا گیا ہے اور پیمنٹ میتھڈ کی جو بھی ویلیو تھی، پے پال میتھڈ کی ویلیو تھی، ہم نیچے آتے ہیں اور یہاں دیکھتے ہیں کہ جس پراپرٹی کی ویلیو ہمیں نکالنی ہے، ہم اسے کانسٹنٹ کے بعد کرلی بریکٹس میں لکھتے ہیں۔ اگر ایک سے زیادہ ہوں تو دونوں پراپرٹیز لکھ دیتے ہیں اور درمیان میں کوما لگا دیتے ہیں۔ تو کیا ہوگا کہ کلائنٹ نام کے آبجیکٹ کو یہ...


    کوڈ اس چیز کو ڈھونڈے گا جس کے اندر "پیمنٹ میتھڈ" نام کی پراپرٹی کی ویلیو ہوگی، پھر اسے اسی نام کے ایک اور ویری ایبل میں اسٹور کر دے گا۔ تو جب ہم کنسول ڈاٹ لاگ کے ذریعے اس "پیمنٹ میتھڈ" کو ایکسیس کرنے کی کوشش کریں گے تو ہمارے پاس دوبارہ سے ویلیو آ جائے گی۔ یہ کوڈ میں آپ کو رن کر کے دکھاتا ہوں اور ہمارے سامنے بالکل وہی نتیجہ آنا چاہیے۔ تو رائٹ کلک کر کے آؤٹ پٹ کلئیر کریں، پھر کوڈ کو میں کنٹرول اے سے سلیکٹ کر کے رن کرتا ہوں۔ تو آپ دیکھیں گے نیچے آؤٹ پٹ میں وہی ویلیوز دوبارہ یہاں شو ہونا شروع ہو گئی ہیں۔ تو پھر سے یہ...


    es6 کا کوڈ ہمارے پاس کیا کر رہا ہے کہ وہ کلائنٹ کے آبجیکٹ میں موجود 'paymentMethod' نام کی پراپرٹی کو ایکسیس کر رہا ہے، اور جو بھی ویلیو اس میں آ رہی ہے اسے 'paymentMethod' نام کے ویریبل میں دوبارہ اسائن کر رہا ہے۔ اور جب ہم اسے پرنٹ کراتے ہیں تو یہاں ویلیو پرنٹ ہو رہی ہے، اور بالکل ویسے ہی کر رہا ہے جیسے 'amount' کی ورڈ کے ساتھ۔



  • Using Destructuring Assignment to Assign Variables from an Object3:15
  • Using Destructuring Assignment to Assign Variables from NESTED Object8:39
  • Using Destructuring Assignment to Assign Variables to Arrays3:30

    اس ویڈیو میں ہم بات کریں گے کہ ٹی اسٹرکچرنگ اسائنمنٹ کو کیسے استعمال کیا جائے تاکہ ویریبل کو آرے میں اسائن کیا جا سکے۔ تو اس سے پہلے جب ہم آرے ڈिफائن کرتے تھے تو اس کے لیے ہم ایک ویریبل لیتے تھے، جیسے کہ آپ یہاں لیفٹ ہینڈ سائیڈ پر دیکھ رہے ہیں۔ مثال کے طور پر، اسے ہم کانسٹنٹ آرے کہتے تھے۔ اس کے اندر پوری آرے ڈفائن ہو جاتی تھی۔ اور آپ جانتے ہیں کہ بریکٹس کے اندر جو کچھ بھی آتا ہے وہ آرے ہوتا ہے، جبکہ کرلی بریسز میں جو کچھ بھی آتا ہے وہ آبجیکٹ ہوتا ہے۔ آرے کے انڈیکس ہوتے ہیں اور آبجیکٹ کے نام ہوتے ہیں۔ تو اگر میں فور کو ایکسیس کرنا چاہوں...


    اگر میں چاہوں تو میں ارے لکھ کر اس میں بریکٹ لگا سکتا ہوں، پھر اس کا انڈیکس فور میرے پاس ہے، زیرو 0 سے شروع ہوتا ہے۔ اگر میں ارے زیرو لکھ کر اسے console.log کے اندر لے جاؤں گا تو ہمارے پاس وہ پرنٹ ہو جائے گا۔ ٹھیک ہے؟ تو جب آپ کسی ارے کو ڈی اسٹرکچر کرتے ہیں تو آپ اصل میں کیا کر رہے ہوتے ہیں؟ اس کے جتنے بھی ایلیمنٹس ہیں، انہیں کسی نہ کسی ویریبل میں اسائن کرواتے ہیں تاکہ آپ اسے console.log کے ذریعے ایکسیس کر سکیں۔ اگر میں اس کوڈ کو چلاؤں، جس میں ہم نے const والے کوڈ میں ix اور j3 تین constants ڈیفائن کیے تھے یا ڈی اسٹرکچر کیا تھا، تو...


    یہ ایرے کیا ہے تو ہمارے پاس رزلٹ آنا چاہیے 493، تو آ برابر ہو جائے گا یا اسٹور ہو فور، اسٹور ہو جائے گا آئی میں، نا اسٹور ہو جائے گا ایکس میں اور پھر اسٹور ہو جائے گا جے ڈی میں۔ میں رائٹ کلک کرتا ہوں اور کوڈ رن کرتا ہوں تو نیچے یہ رزلٹ آپ آؤٹ پٹ سیکشن میں دیکھ سکتے ہیں۔ یہاں پر 493، آئی برابر 4، ایکس برابر 9، اور جے برابر 3 ہے۔ لیکن اگر اس تھرڈ ایلیمنٹ کو مجھے ڈسٹرکچر کر کے کسی ویریبل میں اسٹور کرنا ہو یا آخری ایلیمنٹ کو کسی ویریبل میں اسٹور کرنا ہو تو ہم پھر سے ڈسٹرکچرنگ اسائنمنٹ استعمال کریں گے۔ اس کا طریقہ یہ ہوگا کہ آئی ایکسس کرے گا اس...


    پہلے انڈیکس کو اس کے بعد دیکھیں، ہم نے ایک کاما کے بعد یہاں کوئی ویلیو نہیں لکھی، اس کا مطلب ہے کہ نائن جو سیکنڈ ایلیمنٹ ہے، وہ کسی بھی ویریبل میں اسائن نہیں ہوگا، لیکن یہ دوسرے ویریبل یعنی ایکس میں اسائن ہو جائے گا۔ آخری والی مثال میں نہ تو ایکس میں اسائن ہوا تھا، اب تین ایکس میں اسائن ہوگا۔ اس کے بعد پھر یہاں ہم نے ایک خالی کاما دیا ہے، خالی اسپیس دیا ہے دو کاماز کے درمیان، تو یہاں پر کسی بھی ویریبل کو اسائن نہیں ہوگا۔ اسی طرح رو کسی بھی ویریبل کو اسائن نہیں ہوگا، لیکن جو یہاں لکھا ہے وہ z ویریبل ہے۔


    اگر میں یہاں رائٹ کلک کر کے کلئیر آؤٹ پٹ کرتا ہوں اور یہ والا کوڈ رن کرتا ہوں تو آپ دیکھیں گے کہ اس کا نتیجہ پہلے والے سے مختلف ہے۔ جو نتیجہ پہلے آیا تھا وہ تھا 493 ڈیسٹرکچرنگ اسائنمنٹ کا، اور اس کا نتیجہ ہمارے پاس آیا ہے 4314۔



  • Using Getters and Setters8:50

    اس ویڈیو میں ہم گیٹرز اور سیٹرز کے بارے میں بات کریں گے کہ ہم انہیں کیسے استعمال کرتے ہیں اور کیوں استعمال کرتے ہیں۔ سب سے پہلے ہم دیکھیں گے کہ یہاں ایک constant keyword کے ذریعے ایک variable identify کیا گیا ہے [موسیقی]، جس کی value ہے۔ پورے کو properties بھی کہتے ہیں، اور جو left hand side پر colon کے بائیں طرف ہے اسے key کہتے ہیں، اور یہ value بھی ہوتی ہے۔ یہ ایک object ہے، جو ہمیں curly braces سے پتہ چلتا ہے۔ جب بھی یہ object...


    جب مجھے اس کی ویلیو کو کنسول ڈاٹ لاگ میں لا کر کال کرنا ہوتا ہے تو اس کا طریقہ یہ ہوتا ہے کہ ہم عام طور پر اسے اس طرح لکھتے ہیں: کنسول ڈاٹ لاگ اور لیپ ٹاپ ڈاٹ پروسیسر۔ یہ ڈاٹ نوٹیشن ہے۔ جب میں لیپ ٹاپ ڈاٹ پروسیسر کو کال کروں گا تو مجھے اس کی ویلیو مل جائے گی اور میں اسے پلس یعنی کنکٹی نیشن میں یوز کروں گا۔ اور جب میں لیپ ٹاپ ڈاٹ رام کو کال کروں گا تو ان دونوں کی ویلیوز وہاں پر پرنٹ ہوں گی اور درمیان میں ایک اسپیس آ جائے گا۔ یہ اس کا نارمل سا طریقہ ہے۔ ایک اور طریقہ جو ہم بالکل اسی طرح استعمال کرتے ہیں۔۔۔


    ممکن ہے کہ بات یہ ہو کہ اگر ہم ٹیمپلیٹ لٹریلز استعمال کر لیں تو ہمیں تھوڑی آسانی ہو جاتی ہے۔ ہم اسے کمنٹ کرتے ہیں۔ دوسری مثال آپ نیچے دیکھ رہے ہیں، ٹیمپلیٹ لٹریلز میں یہ ہوتا ہے کہ آپ دو بیک ٹِکس استعمال کرتے ہیں، ایک بیک ٹک یہ ہے، دوسرا بیک ٹک یہ ہے، اور آپ ڈاٹ نوٹیشن بھی استعمال کرتے ہیں۔ لیکن اس کرلی بریکٹس کے اندر، اور شروع میں آپ ڈالَر لگاتے ہیں، یعنی ڈالَر کرلی بریکٹس۔ پھر ڈاٹ نوٹیشن، آبجیکٹ کی ڈاٹ نوٹیشن، اور ہم اسے استعمال کریں گے۔ اور جو بھی نتیجہ ہوگا وہ بالکل ویسا ہی ہوگا جیسا کہ آپ نے یہاں پر دیکھا۔


    دیکھو اس طریقے میں بھی مسئلہ یہ ہے کہ اگر مجھے بار بار اپنے پورے کوڈ میں اس لیپ ٹاپ ڈاٹ پروسیسر اور لیپ ٹاپ ڈاٹ فیم کو کال کرنا پڑے تو مجھے بار بار یہ کوڈ لکھنا پڑے گا۔ تو اگر مجھے یہ کوڈ بار بار لکھنا ہے تو اس کا ایک بہتر طریقہ یہ ہو سکتا ہے کہ ہم ایک فنکشن بنا لیں اور اس فنکشن میں ان دونوں ویلیوز کو ریٹرن کر لیں، اور پھر اس فنکشن کو کال کر لیں، تاکہ ہم ان دونوں ویلیوز کو کسی آبجیکٹ سے آسانی سے حاصل کر سکیں۔ تو اس میں ہم کیا کرتے ہیں کہ ڈاٹ نوٹیشن کے ذریعے... یہاں آپ تیسرا دیکھ رہے ہیں کہ جب ہم فنکشن کو کال کر...


    کسی آبجیکٹ کے اندر لیپ ٹاپ ڈاٹ فنکشن اور ظاہر سی بات ہے کہ ہمیں یہاں پر پیرینتھیس استعمال کرنے ہوں گے، تو ہم یہ کیسے کرتے ہیں؟ اس کے لیے ہم اوپر آئیں گے۔ سب سے پہلے میں آپ کو دہرادیتا ہوں کہ ہم فنکشن بنیادی طور پر کیسے بناتے ہیں۔ فنکشن بنانے کا ایک طریقہ یہ ہے کہ آپ فنکشن کا کی ورڈ لکھتے ہیں، اس کے آگے یہ پیرینتھیس لگاتے ہیں، اور یہ کوڈ بلاک لکھتے ہیں۔ اور اس کوڈ بلاک کے اندر آپ وہ اصل کوڈ لکھ دیتے ہیں جو آپ اس فنکشن کے لیے چلانا چاہتے ہیں۔ اور جب آپ اسی فنکشن کو کسی آبجیکٹ کے اندر ڈیفائن کرتے ہیں تو پھر یہ کالن استعمال کرتے ہیں۔


    ہوتا ہے کہ کالن سے پہلے آپ لیفٹ ہینڈ پر اس کی کی لکھتے ہیں، یہ کی ہے، یہ اس کی ویلیو ہے، یہ کی ویلیو پیئر ہے، اسے پراپرٹی کہتے ہیں۔ یہ کی ہے، یہ اس کی ویلیو ہے۔ تو جب کی کی ویلیو فنکشن بن جاتی ہے تو ہم عام طور پر اسے میتھڈ کہتے ہیں۔ تو اسے میں کمنٹ کرتا ہوں، آگے دیکھیں۔ جب بھی ہم عام طور پر کوئی فنکشن آبجیکٹ کے باہر ڈیفائن کرتے ہیں تو ہم اس میں کیا کرتے ہیں؟ فنکشن کا کی ورڈ لکھتے ہیں، فنکشن کا نام لکھتے ہیں تاکہ ہم اسے کال بیک کر سکیں، اس کے بعد یہ پیرینتھیس ہوتے ہیں اور یہ کرلی بریکٹس ہوتے ہیں۔ تو جب اسی طرح کے فنکشن کو ہم...


    جب ہم آبجیکٹ کے اندر کال کر رہے ہوتے ہیں تو آبجیکٹ ہمیں آسانی سے یہ سہولت دیتا ہے کہ فنکشن کا کی ورڈ لکھنے کی ضرورت نہیں ہوتی، ہم سیدھے سیدھے کی-ویلیو پیر ڈائریکٹلی ڈیفائن کر سکتے ہیں۔ تو جو کام ہم پہلے اس طریقے سے کر رہے تھے، اسے ہم فنکشن کا کی ورڈ ہٹا کر بھی اسی طرح لکھ سکتے ہیں۔ یہ میتھڈ کال ہو جائے گا، اور جب ہم اس میں کلی بریسز کے اندر کوئی ویلیو یا کوڈ بلاک لکھنے کی کوشش کرتے ہیں تو آپ یہاں دیکھ سکتے ہیں۔ پھر سے ہم نے اسی چیز کو ریپیٹ کیا ہے، ایک اسپیکس نام کا فنکشن ہے اور اس کے پیرینتھیسس میں یہ کوڈ بلاک لکھا ہوا ہے۔


    یہ ایٹلی وہی کوڈ بلاک ہے جس میں ٹیمپلیٹ لٹریل استعمال ہوا ہے، جو ہم نے پہلے کنسول ڈاٹ لاگ کے ذریعے پرنٹ کیا تھا۔ ہم ریٹرن اس لیے لکھتے ہیں کیونکہ جب بھی آپ کوئی فنکشن لکھتے ہیں تو اس فنکشن کا کوئی نہ کوئی ریٹرن ہونا ضروری ہوتا ہے۔ کیونکہ جب بھی میں اس فنکشن کو کال کروں گا، تو فنکشن ہمیں کچھ نا کچھ واپس دے گا۔ تو اگر میں اس فنکشن کو یہاں بلکل نیچے آ کر کنسول ڈاٹ لاگ میں لپ ٹاپ ڈاٹ اسپیکس لکھ کر کال کروں، تو یہ فنکشن بالکل وہی کام کرے گا جو یہاں ہو رہا تھا، لیکن ہمارا کوڈ کافی حد تک...


    تو اس اپروچ میں ایک مسئلہ یہ ہے کہ ہمیں یہاں دو پینس استعمال کرنے پڑتے ہیں، اور دوسری مشکل یہ ہے کہ اس سے ہم صرف پراپرٹی کو ایکسس کر سکتے ہیں، پراپرٹی کو ری سیٹ یا ری اسٹور نہیں کر سکتے۔ مثال کے طور پر، اگر میں یہاں لکھوں "لیپ ٹاپ ڈاٹ اسپیکس"، جو کہ اصل میں وہ فنکشن ہے جو ہم نے تھوڑی دیر پہلے دیکھا تھا، اور اس میں نئی ویلیو ڈیفائن کروں، تو یہ نئی ویلیوز جیسے پروسیسر یا ریم کو اس آبجیکٹ کے اندر کبھی بھی ڈیفائن نہیں کر سکتا کیونکہ یہ باہر لکھا ہوا ہے۔ ٹھیک ہے؟


    یہاں ہمارے پاس گيٹرز اور سیٹرز آتے ہیں جن کے ذریعے ہم پروپرٹیز کو آبجیکٹ کے باہر سے ایکسیس کر سکتے ہیں۔ سیٹرز کے ذریعے ہم آبجیکٹ کے باہر سے پروپرٹیز کو سیٹ کر سکتے ہیں اور گيٹرز کے ذریعے ہم ایکسیس کر سکتے ہیں۔ تو اس میں ہوتا یہ ہے کہ جیسے آپ دیکھ رہے ہیں اسپیکس، اور اس کے بعد ہم نے پورا فنکشن ڈیفائن کیا ہوا ہے۔ اس اسپیک سے پہلے آپ کیا کرتے ہیں کہ گيٹ لکھ دیتے ہیں، سیدھی سی بات جیسا کہ آپ یہاں دیکھ رہے ہیں۔ یہاں آپ گيٹ کوڈ بلاک میں کرتے ہیں، یہاں پر ون، اور اسے بھی ہم کر لیتے ہیں۔


    یہاں پر ہم نے کیا کیا ہے کہ "سپیکس" نام کے فنکشن کے پیچھے صرف "گیٹ" لکھ دیا ہے اور کوئی تبدیلی نہیں کی۔ تو اب جب میں یہ کوڈ چلاؤں گا تو مجھے دو پینسیس لکھنے کی ضرورت نہیں پڑے گی، ہم اسے سیدھے ڈاٹ نوٹیشن سے کال کر سکتے ہیں، جیسے ہم آسانی سے کسی بھی آبجیکٹ کی پراپرٹی کو ڈاٹ نوٹیشن سے کال کرتے ہیں۔ تو "لیپ ٹاپ.سپیکس" کیا کرے گا؟ یہ جا کر دیکھے گا کہ "گیٹ" کہاں ہے اور یہ "سپیکس" نام کا فنکشن کہاں ہے، اور جو بھی ویلیو ہمیں چاہیے اسے واپس کر دے گا۔


    ریٹرن کر، ہم نے ریٹرن کرائی ہے۔ دوسرے نمبر پر گٹ کی طرح ایک اور چیز ہوتی ہے جسے ہم سیٹ کہتے ہیں۔ یہ سیٹ کیا کرے گا؟ جب بھی آپ آبجیکٹ کے باہر سے دیکھیں گے، یہ آبجیکٹ جو نیچے سب سے نیچے ہے، جو آپ یہاں کرلی بریکٹس میں دیکھ رہے ہیں، یہ آبجیکٹ کلوز ہو رہا ہے۔ آپ لائن سے دیکھ سکتے ہیں کہ سب سے اوپر ہم نے آبجیکٹ کانسٹنٹ کے ذریعے ڈیفائن کیا تھا اور یہ یہاں کلوز ہو رہا ہے۔ ابھی جو سیٹ کی پراپرٹی یا میتھڈ آپ دیکھ رہے ہیں، یہ آبجیکٹ کے اندر ہے۔ آبجیکٹ کے اندر آپ فنکشن لیتے ہیں اور سیٹ کا کی ورڈ لکھتے ہیں۔


    اوپر آپ نے گیٹ کا کی ورڈ لکھا تھا، اس میں اور اس میں بنیادی فرق یہ ہے کہ یہاں آپ کو ایک پیرامیٹر define کرنا پڑتا ہے کیونکہ آپ نے آؤٹ سائیڈ آف دی آبجیکٹ یہاں اس کی ویلیو سیٹ کرنی ہوتی ہے۔ جب اس کی ویلیو سیٹ کرنی ہو تو obviously آپ کوئی نہ کوئی پیرامیٹر بھیجیں گے، اور جب کوئی پیرامیٹر بھیجیں گے تو یہ اس کی ویلیو ری سیٹ کرے گا۔



  • Class Syntax and Constructor Method4:10

    اس ویڈیو میں ہم بات کریں گے کہ ہم کلاس سنٹیکس اور کنسٹرکٹر فنکشن کو کیسے استعمال کر کے نیا فنکشن بنا سکتے ہیں۔ پہلے ہم ایسا کرتے تھے جیسا کہ آپ دیکھ رہے ہیں، یہ فنکشن ہم نے ڈفائن کیا ہوا ہے، یہ عام جاوا اسکرپٹ کا فنکشن ہے، اس کا ایک پیرامیٹر ہے اور کالی بریسز سے کوڈ بلاک شروع ہوتا ہے۔ یہ کوڈ بلاک ہے جو ہم نے ڈفائن کیا ہوا ہے ایک نئے ویریبل میں جس کا نام ہم نے رکھا ہے "لیپ ٹاپ"۔ اور جب بھی میں اس نئے ویریبل کو "نیو" کی ورڈ سے کال کرتا ہوں اور اس میں کوئی پیرامیٹر یا آرگیومنٹ پاس کرتا ہوں۔۔۔


    تو ایک نیا فنکشن بن جائے گا جو کہ یہ لیپ ٹاپ والا فنکشن ہوگا اور اس کا آرگیومنٹ ٹی بُک بن جائے گا، یہ اس کا پیرامیٹر ہوگا اور یہ نیا فنکشن ویری ایبل میں سیو ہو جائے گا۔ جب ہم کلاس کی بات کرتے ہیں تو اس میں ایک نیا سینٹیکس یا کی ورڈ استعمال کرتے ہیں جسے ہم کہتے ہیں کلاس۔ کلاس کے آگے آپ فنکشن کا نام لکھتے ہیں، فنکشن نیم، اور کرلی بریسز دیتے ہیں۔ دو کرلی بریسز کے بعد آپ لکھتے ہیں کنسٹرکٹر کا کی ورڈ۔ کنسٹرکٹر کا کی ورڈ ایک نیا فنکشن بناتا ہے، یہ اس فنکشن کا پیرامیٹر ہوتا ہے، اور یہاں اندر کوڈ بلاک ہوتا ہے۔


    ہم یہاں "this.model = name" استعمال کر رہے ہیں، یعنی جب بھی ہم اس فنکشن کو کسی بھی آرگیومنٹ یا پیرامیٹر کے ساتھ چلائیں گے، تو یہ کنسٹرکٹر ایک نیا فنکشن بنائے گا، اور نیا فنکشن بننے کے بعد جو آرگیومنٹ ہوگا وہ یہاں محفوظ ہو جائے گا۔ اور "this.model" کے ذریعے "model" نام کے ویریئبل میں وہ آرگیومنٹ یا پیرامیٹر سیٹ ہو جائے گا۔ "this" اس فنکشن کی طرف اشارہ کر رہا ہے۔ جب ہم اسے کال کرتے ہیں تو ہم کہتے ہیں "نیو لیپ ٹاپ"، یہ "class" والے کی ورڈ میں جائے گا۔ ابھی ہم اسے تھوڑی دیر کے لیے کمنٹ کر دیتے ہیں، کنٹرول + فور۔


    سلیش اور یہاں ہم ایک نیا فنکشن بنا رہے ہیں نیو کیورڈ کے ذریعے۔ تو کلاس کا کیورڈ کنسٹ، کا کیورڈ اینڈ نیو کیورڈ۔ یہ نیو کیورڈ ایک نیا فنکشن بنائے گا جو کلاس سینٹیکس استعمال کرے گا۔ اور جو نیا فنکشن ہم بنا رہے ہیں اس کا نام ہے لیپ ٹاپ۔ تو نیو کیورڈ اور یہ لیپ ٹاپ کا لفظ اس کلاس سینٹیکس میں ایک نیا فنکشن کریئیٹ کرے گا۔ اور اس نئے فنکشن کو ہمیں آرگیومنٹ پاس کرنا ہے، میک بک۔ تو اصل میں کیا ہوگا کہ یہ میک بک اور جو بھی ٹیکسٹ ہم نے لکھا ہے یہ پیرامیٹر کی جگہ پر چلا جائے گا، یعنی یہ پیرامیٹر نیم یہاں آ جائے گا۔


    کہ نام برابر ہوگا میک بک کے اور یہ نام میک بک سے تبدیل ہو جائے گا اور یہ لیپ ٹاپ فنکشنز ماڈل ویری ایبل بھی میک بک کے برابر ہوگا۔ تو اگر ہم کنسول ڈائیلاگ کے ذریعے "میرا لیپ ٹاپ" نام کا ویری ایبل، جو یہاں پر ہم نے ڈیفائن کیا ہے، اسے رن کریں تو آپ دیکھ سکتے ہیں کہ یہ کوڈ کیسے کام کرے گا۔ اور جیسے ہی ہم کوڈ رن کرتے ہیں تو نیچے آؤٹ پٹ میں آپ دیکھ سکتے ہیں کہ لیپ ٹاپ نام کا فنکشن چلایا گیا ہے اور اس فنکشن کا ماڈل میک بک 15 انچ 2018 کے برابر ہے۔ تو اس ویڈیو میں ہم نے کلاس کا یہی دیکھا۔


    سِنٹیکس اور کنسٹرکٹر کے میتھڈ کو استعمال کرتے ہوئے ہم کس طرح بہت صاف اور منظم طریقے سے کسی انسٹینس سے بار بار ویلیوز یا آبجیکٹ بنا سکتے ہیں، وہ بھی کسی فنکشن کے ذریعے۔



  • Concise Function Declaration in ES64:12

    اس ویڈیو میں ہم بات کریں گے کہ ہم کس طرح فنکشنز کو آسانی سے ES6 میں ڈیفائن کر سکتے ہیں۔ تو یہاں آپ دیکھ رہے ہیں کہ ES5 میں کیا ہوتا تھا۔ پہلے جب بھی آپ آبجیکٹ لِٹرلز ڈیفائن کرتے تھے، اور پچھلی ویڈیو میں ہم نے دیکھا تھا کہ جب بھی آپ آبجیکٹ لِٹرلز ڈیفائن کرتے ہیں، تو یہ کاما سے الگ کی گئی ویلیوز ہوتی ہیں۔ جیسے یہ ہے، یہ کاما ہے، یہ کاما سے الگ کی گئی ویلیوز ہیں، انہیں آبجیکٹ لِٹرل کہتے ہیں۔ اور چونکہ یہ آبجیکٹس کلی بریکٹس سے بنتے ہیں، تو ہمیں پتہ چلتا ہے کہ ان آبجیکٹس کے اندر ایک پراپرٹی ہوتی ہے، جو بائیں طرف ہوتی ہے۔


    سائیڈ پر پھر ایک کالن ہوتا ہے، پھر ویلیو ہوتی ہے، اسے نام بھی کہہ سکتے ہیں، اسے پراپرٹی بھی کہہ سکتے ہیں۔ تو رائٹ ہینڈ سائڈ پر ہم کچھ بھی دے سکتے ہیں، جیسے ارے ہو سکتے ہیں، فنکشنز ہو سکتے ہیں، یا آبجیکٹس ہو سکتے ہیں۔ اندر آبجیکٹس۔ یہاں پر ہم نے دوسری ویلیو یا دوسری پراپرٹی جو ڈیفائن کی ہے، وہ رائٹ ہینڈ سائڈ پر ایک پورا فنکشن ہے۔ اور جس طرح ہم فنکشن ڈیکلیر کرتے ہیں، ویسے ہی ہم نے یہ فنکشن ڈیکلیر کیا ہے۔ تو س میں کیا ہوتا ہے کہ ہم کیونکہ اس کو مزید کن سائز کرتے ہیں، زیادہ ری ایبل بناتے ہیں، تو ہم یہ فنکشن...


    اگر ہم کی ورڈ کو بالکل ہٹا دیں اور یہ کالن بھی ہٹا دیں تو ہمارا یہ کوڈ پھر بھی کام کرے گا۔ مثال کے طور پر اگر میں اسے ہٹاتا ہوں اور یہاں پر اسے آل سلیکٹ کرکے اس کوڈ کو رن کرتا ہوں تو آپ دیکھ رہے ہیں کہ میرا یہ کوڈ پھر بھی چل رہا ہے، کیونکہ اگر یہ کوڈ کام نہ کرتا تو یہاں پر کوئی ایرر آ جاتا۔ تو اب میں بتاتا ہوں کہ عملی طور پر یہ کوڈ کس طرح کام کر رہا ہے۔ یہ بات خود واضح ہو رہی ہے لیکن میں اسے تھوڑا مزید واضح کر دیتا ہوں کہ ہم نے اس کانسٹنٹ کے کی ورڈ کے ذریعے ایک...


    ایک ویریبل ڈکلئیر کیا گیا ہے جس کا نام shop ہے اور یہ دراصل ایک آبجیکٹ ہے۔ ہمیں یہ بات کرلی بریکٹس سے پتہ چل رہی ہے۔ اس آبجیکٹ میں دو آبجیکٹ لٹرلز ہیں، جن میں پہلا جوڑا نام اور ویلیو کا ہے، اور دوسرا جوڑا ہے کیونکہ ہم نے فنکشن کا کی ورڈ ہٹا دیا ہے، اس لیے یہاں کالن کے بعد فنکشن کا کی ورڈ لکھنے کی ضرورت نہیں ہے۔ تو یہی فنکشن کا کی ورڈ ہے۔ اب جب میں اس کوڈ کو مکمل طور پر رن کرتا ہوں تو یہ کوڈ کیا کرے گا؟ یہ shop نام کے کی ورڈ پر جائے گا اور چیک کرے گا کہ shop ایک آبجیکٹ ہے۔


    آبجیکٹ کے اندر یہ نام یا پراپرٹی اپڈیٹڈ سیلز کی تلاش کرے گا، کیونکہ اپڈیٹڈ سیلز ایک قسم کا فنکشن ہے تو جب ہم فنکشن کو کال کرتے ہیں تو اس کا نام لکھتے ہیں اور کرلی بریسز میں اس کی ویلیو بھی لکھتے ہیں۔ یہ ویلیو یہاں جا کر پیرامیٹر بنے گی، جیسے 133۔ اور 133 یہ آبجیکٹ، یہ فنکشن رن ہوگا۔ اس کے بعد کوڈ یا آپ کا کرسر نیچے آئے گا اور دیکھے گا۔ یہاں "دس" ایک کی ورڈ ہے، جس کا مطلب ہے یہ آبجیکٹ، یعنی شاپ کی سیلز۔ مطلب شاپ کے اس والے ویری ایبل میں جو نئی ویلیو اسٹور کرنی ہے، وہ کرنی ہے، نئی سیلز فگر والی ویلیو، اور نئی سیلز فگر والی ویلیو آ رہی ہے۔


    یہاں سے پیرامیٹر سے اور یہ پیرامیٹر نیولی ہم نے ڈیفائن کیا ہے 133 تو سب سے پہلے یہاں پر پلس ہوگا پھر 13 یہاں پر پلس ہوگا پھر یہ 133 اس آبجیکٹ کی سیلز کی نئی ویلیو بن جائے گی تو سیلز ہمارے پاس اب ہو جائیں گی 133 اور جب ہم اسے کنسول ڈاٹ لاگ کے ذریعے پرنٹ کروائیں گے شاپ کے آبجیکٹ کے اندر سیلز کی ویلیو پرنٹ کروائیں گے تو یہاں پر ہمیں دے گا 133۔



  • Concise Object Literal Declaration using Object Property Shorthand3:09

    اس ویڈیو میں ہم بات کریں گے کہ ہم آبجیکٹ لٹریلز کو کس طرح آسانی سے آبجیکٹ پراپرٹی شارٹ ہینڈ استعمال کرتے ہوئے ڈیکلئیر کر سکتے ہیں۔ سب سے پہلے ہمیں یہ سمجھنا ہوگا کہ آبجیکٹ لٹریل کیا ہوتا ہے۔ سادہ اور عام زبان میں، آبجیکٹ لٹریل وہ ہوتا ہے جس میں کومہ سے الگ کی گئی ویلیوز ایک آبجیکٹ کے اندر ہوتی ہیں۔ اور جیسا کہ ہم پہلے بھی کئی بار بات کر چکے ہیں، آبجیکٹ کو کرلی بریسز کے اندر ڈیفائن کیا جاتا ہے۔ تو جو کومہ سے الگ کی گئی ویلیوز آپ کرلی بریسز کے اندر دیکھ رہے ہیں، وہ آبجیکٹ لٹریل ہے۔ اب اگر ہم اسے زیادہ کمپیکٹ طریقے سے...


    رائٹ کرنے جا رہے ہیں تو ہم یہ ویڈیو میں دیکھیں گے کہ کیسے کریں گے۔ میں اسے انکمینٹ کر دیتا ہوں تاکہ آپ کو بہتر طریقے سے سمجھ آئے۔ ہم نے کانسٹنٹ کے کی ورڈ سے ایک ویری ایبل ڈکلئیر کیا ہے 'ایر' اور آپ دیکھ سکتے ہیں کہ بریکٹس کے اندر ہم نے یہ آرے ڈیفائن کیا ہے جو ہے 'اے بی سی ڈی'۔ اب کسی بھی ویری ایبل کو اس آرے کے اندر ایکسیس کرنے کے لیے ہم اس کے انڈیکس نمبر سے اسے ایکسیس کرتے ہیں۔ لیکن اگر آپ دیکھیں کہیں پر یہ آرے ہی ڈیفائن ہوئی ہے، کچھ ایسا جیسے آپ یہاں دیکھ رہے ہیں، لیکن یہ اندر نہیں ہے۔


    ब्रैकेट्स का मतलब होता ہے وہ چیزیں جو کرلی بریکٹس کے اندر ہوتی ہیں، جیسے یہ والا۔ اب اس میں تھوڑا کنفیوژن ہو سکتا ہے کیونکہ یہ ایک آبجیکٹ ہوتا ہے اور آبجیکٹ میں نام-ویلیو یا پراپرٹی-ویلیو کا کومبینیشن ہوتا ہے۔ اسی لیے ہم نے اس کا نام بھی رکھا ہے تاکہ اگر کنفیوژن ہو تو سمجھ آ جائے کہ یہ اصل میں کیا چیز ہے۔ اسے آبجیکٹ پراپرٹی شارٹ ہینڈ کہتے ہیں۔ یہ ایک آبجیکٹ ہے یا آبجیکٹ کی پراپرٹی ہے، پورا یہ آبجیکٹ ہے یا آبجیکٹ پراپرٹی ہے، یہ آبجیکٹ پراپرٹی کا شارٹ ہینڈ ہے۔ تو اصل میں...


    اصل میں ہوتا یہ ہے کہ جب آپ 's' کو ریفرنس کریں گے تو یہی اس کی پراپرٹی بن جائے گی اور یہی اس کی ویلیو بھی، یعنی کہ یہ 'r' ہے، یہی پراپرٹی ہے اور یہی ویلیو بھی۔ تو اس کا استعمال اس طرح ہوتا ہے کہ جب آپ اس آبجیکٹ میں انہی پراپرٹیز اور انہی ویلیوز کو کسی فنکشن کے پیرامیٹر کے طور پر استعمال کرتے ہیں، تو آپ کا فنکشن بہتر ہو جاتا ہے۔ آپ کو ایسا کوڈ لکھنے کی ضرورت نہیں پڑتی جو بڑا ہو، جس میں کالن، اسپیسز ہوں اور ویلیوز بار بار دہرائی گئی ہوں۔ آپ اس طرح کی ویلیوز ڈیفائن کر دیتے ہیں۔


    فنکشن کے پیرامیٹر میں اور اسی کو ان سائٹ، فنکشن کال بیک کر لیتے ہیں۔



  • Create Strings Using Template Literals2:05

    اس ویڈیو میں ہم بات کرنے والے ہیں کہ ہم ٹیمپلیٹ لٹریلز کا استعمال کرتے ہوئے کیسے سٹرنگ بنا سکتے ہیں۔ یہاں آپ دیکھ رہے ہیں کہ ہم نے ایک کانسٹنٹ متعین کیا ہوا ہے جس کا نام یوزر نیم ہے۔ یہ دراصل ایک آبجیکٹ ہے جس کی پہچان کروڑ بریسز سے ہوتی ہے۔ اور یہ ایک ویریبل ہے جس کے اندر ہم نے ماسٹرز، آورز، اور ورڈ کو ڈیفائن کیا ہے۔ یوزر کی تعلیم ماسٹرز ہے اور یوزر نے کل 200 گھنٹے کام کیے ہیں۔ اب ہم اس معلومات کو یہاں نیچے استعمال کریں گے جو آپ دیکھ رہے ہیں۔


    اصل میں ٹیمپلیٹ لیٹرل ہوتا ہے، تو سب سے پہلی چیز جو آپ دیکھ رہے ہیں وہ ٹیمپلیٹ لیٹرل ہے۔ ہم اسے سب سے پہلے اس لیے استعمال کرتے ہیں کیونکہ اس میں ہم زیادہ پیچیدہ سٹرنگز بنا سکتے ہیں۔ مثلاً اگر ہمیں سٹرنگ انٹرپولیشن کرنی ہو۔ سٹرنگ انٹرپولیشن کا مطلب ہوتا ہے کہ آپ کسی خاص جگہ پر کسی دوسری سٹرنگ کو شامل کر سکیں۔ یہاں جو آپ دیکھ رہے ہیں، یہ سٹرنگ انٹرپولیشن ہے۔ یہ کیا کرے گا کہ یوزر نام کی آبجیکٹ میں ڈاٹ نوٹیشن کے ذریعے ایجوکیشن نام کا ویریبل یا...


    یہ پراپرٹی تلاش کرے گا اور اس کی جو ویلیو ہوگی وہ یہاں پر ڈال دے گا۔ آپ دیکھ سکتے ہیں کہ اگر یہ یہاں پر سٹرنگ انٹروپولیشن کام کر جائے تو ہم کہیں بھی اس سٹرنگ کو بند نہیں کر رہے۔ اس کو استعمال کرنے سے پہلے، یعنی اس پورے سٹرنگ کے اندر، ہم ایک طرح کا ٹیمپلیٹ استعمال کر رہے ہیں، سٹرنگ استعمال کر رہے ہیں جو یہاں پر انٹروپولیٹر ہے۔ ہم اس کی جگہ اگر کوئی اور ہو۔



Requirements

  • You should have basic knowledge of javascript

Description

This course teaches you the basic fundamentals of ES6 which is the modern syntax for javascript. In other words, ES6 is itself javascript with standard syntax defined.


Before enrolling this course, you need to make sure you understand basic javascript concepts and syntax like function declaration, function calling, variable declaration, array defining, objects, loops and other programming language basic concepts.


Master the core foundations of modern JavaScript with this , beginner-friendly ES6 course designed to transform how you write code. Whether you're just starting your JavaScript journey or looking to update your skills from older ES5 practices, this course delivers clear, concise, and hands-on training that will make you confident working with today's JavaScript.


In this course, you will understand the critical differences between var, let, and const, and learn  these distinctions matter for writing code. You'll discover how to properly declare and manage variables, work with arrays using methods like push(), and control program flow with for loops. The course also covers advanced ES6 concepts such as arrow functions, anonymous functions, and how to work effectively with function parameters.


By the end of this course, you will have a command of modern JavaScript syntax and be ready to write cleaner, more efficient code for your personal projects, freelance work, or job applications.

Who this course is for:

  • Beginner students for javascript