جی‌اوزاسکریپت خطاهای رایج

اس فصل میں جسٹ اسکریپت میں کچھ عام غلطیاں درج کی گئی ہیں。

غلطی طور پر استعمال کردا ہے

کوئی غلطی، اگر if کوئی غلطی، اگر پروگرامر=)، نہ کہ مقابس آپریٹر (=====)، جس کی وجہ سے جسٹ اسکریپت کا پروگرام کچھ ناپریان نتائج پیدا کر سکتا ہے。

یہ if کوئی وارننگ درج کردیگی: falseیعنی، ممکن ہے کہ اس کا اثر چاہئیے، کیونکہ x 10 سے نہیں برابر ہوتا:

var x = 0;
if (x == 10) 

خود کا تجربہ کریں

یہ if کوئی وارننگ درج کردیگی: trueیعنی، ممکن ہے کہ اس کا اثر ناچا رہ جائے، کیونکہ 10 true ہوتا ہے:

var x = 0;
if (x = 10) 

خود کا تجربہ کریں

یہ if کوئی وارننگ درج کردیگی: falseیعنی، ممکن ہے کہ اس کا اثر ناچا رہ جائے، کیونکہ 0 false ہوتا ہے:

var x = 0;
if (x = 0) 

خود کا تجربہ کریں

توسیع کوئی بھی نتیجہ واپس نکالتا ہے.

ترجیحی طور پر سستے مقابس کا توقع

در مقابس عام میں، اعداد کا معاملہ اہم نہیں ہوتا. if کوئی وارننگ درج کردیگی: true:

var x = 10;
var y = "10";
if (x == y) 

خود کا تجربہ کریں

در آپریشن مقابس میں، واقعی اعداد کا معاملہ اہم ہوتا ہے. if کوئی وارننگ درج کردیگی: false:

var x = 10;
var y = "10";
if (x === y) 

خود کا تجربہ کریں

یہ مشکل یہ ہے کہ اگر switch کچھ وارننگ درج کردیگی:

یہ switch کوئی وارننگ درج کردیگی:

var x = 10;
switch(x) {
    case 10: alert("Hello");
}

خود کا تجربہ کریں

یہ switch کوئی وارننگ درج نہیں دکھائیگی:

var x = 10;
switch(x) {
    case "10": alert("Hello");
}

خود کا تجربہ کریں

مفہوم ناپذیر جمع اور کوآٹینیشن

جمعاستعمال کیلئےاعدادہم چاہتے ہیں، لیکن نہیں،

کوآٹینیشن (Concatenation)استعمال کیلئےفونٹہم چاہتے ہیں، لیکن نہیں،

جسٹ اسکریپت میں دونوں آپریشن ایک سے ہی آپریٹر استعمال کرتا ہے + آپریٹر

اس لئے اعداد کو عدد کی شکل میں جمع کیا جائے تو اعداد کو فونٹ کی شکل میں جمع کیا جائے تو مختلف نتائج پیدا ہو سکتے ہیں:

var x = 10 + 5;          // ز میں نتیجہ 15 ہوگا
var x = 10 + "5";         // ز میں نتیجہ "105" ہوگا

خود کا تجربہ کریں

اگر دو متغیر کو جمع کیا جائے تو نتیجہ پیش بینی ناپذیر ہوتا ہے:

var x = 10;
var y = 5;
var z = x + y;            // ز میں نتیجہ 15 ہوگا
var x = 10;
var y = "5";
var z = x + y;            // ز میں نتیجہ "105" میں ہوگا

خود کا تجربہ کریں

مفہوم ناپذیر فلوٹ پوائنٹ

جسٹ اسکریپت میں تمام اعداد 64 بیتی ذخیرہ کی جاتی ہیںفلوٹنگ نرمل (Floats)ہم چاہتے ہیں، لیکن نہیں،

تمام پروگرامنگ زبان، از JavaScript کے علاوہ، سائز کی بیداری کا مسئلہ رکھتے ہیں:

وار ایکس = 0.1;
وار ی = 0.2;
وار ز = ایکس + ی             // ز میں کا نتیجہ 0.3 نہیں ہوگا

خود کا تجربہ کریں

اس مسئلہ کو حل کرنے کے لئے ضرب یا تقسیم کا استعمال کریں:

مثال

وار ز = (ایکس * 10 + ی * 10) / 10;       // ز میں کا نتیجہ 0.3 ہوگا

خود کا تجربہ کریں

JavaScript کی سلسلے میں سلسلہ نکالنا

JavaScript آپ کو سلسلے میں سلسلے نکالنا بھی اجازت دیتا ہے:

مثال 1

وار ایکس =
"Hello World!";

خود کا تجربہ کریں

لیکن، اگر کسی بجائی میں سلسلہ نکالنا ضروری نہیں ہو تو، تو اس کا استعمال نہ کریں:

مثال 2

وار ایکس = "Hello
ورلڈ!";

خود کا تجربہ کریں

اگر کسی بجائی میں سلسلہ نکالنا ضروری ہو تو، تو اس کا استعمال کریں:

مثال 3

وار ایکس = "Hello \\
ورلڈ!";

خود کا تجربہ کریں

غلط سیمکولنز

کسی غلط سیمکولنز کی وجہ سے اس کو ایکس کی کسی بھی قیمت پر چلایا جائے گا:

اگر (ایکس == 19);
{
     // کد بلاک
}

خود کا تجربہ کریں

بازگشت کلمات میں سلسلہ نکالنا

اسلوب کے آخری حصے میں خودکار طور پر سلسلے کو بند کرنا JavaScript کا دفعاتی عمل ہے。

اس وجہ سے نیچے کی دو مثال ایک ہی نتائج پیش کرتی ہیں:

مثال 1

مثال 5
    وار توانائی = 10  
    بازگشت ا * توانائی
}

خود کا تجربہ کریں

مثال 2

مثال 5
    وار توانائی = 10;
    بازگشت ا * توانائی;
}

خود کا تجربہ کریں

JavaScript آپ کو سلسلہ میں سلسلہ نکالنا بھی اجازت دیتا ہے:

اس وجہ سے مثال 3 بھی ایک ہی نتائج پیش کرتا ہے:

مثال 3

مثال 5
    اگر کسی سلسلے کو نیم بند رکھا جائے تو:
    JavaScript اس سلسلے کو اگلے سلسلے کی مدد سے پورا کرے گا:  
    بازگشت ا * توانائی;
}

خود کا تجربہ کریں

لیکن اگر: بازگشت سلسلہ میں سلسلہ نکالنا کیا پیش آئے گا:

مثال 4

مثال 5
    اگر کسی سلسلے کو نیم بند رکھا جائے تو:
    JavaScript اس سلسلے کو اگلے سلسلے کی مدد سے پورا کرے گا:  
    بازگشت
    فونکشن مائی فونکشن (ا) {
}

خود کا تجربہ کریں

یہ فونکشن آپ کو بازگشت فراہم کرے گا غیر معلوم!

JavaScript آپ کا مطلب اس طرح سمجھتا ہے:

یوں تو، اس وجہ سے مثال 3 بھی ایک ہی نتائج پیش کرتا ہے:

مثال 5
     اگر کسی سلسلے کو نیم بند رکھا جائے تو:
    JavaScript اس سلسلے کو اگلے سلسلے کی مدد سے پورا کرے گا:  
    JavaScript اس سلسلہ کو خودکار طور پر بند کرے گا:
    فونکشن مائی فونکشن (ا) {
}

خود کا تجربہ کریں

ا * توانائی;

توضیح

اگر کسی سلسلے کو نیم بند رکھا جائے تو:

وار

JavaScript اس سلسلے کو اگلے سلسلے کی مدد سے پورا کرے گا:

توانائی = 10;

بازگشت

لیکن اس سلسلے کو پورا بنانے کے لئے:

JavaScript اس سلسلہ کو خودکار طور پر بند کرے گا:

بازگشت;

یہ واقعیت اس وجہ سے پیش آتی ہے کہ JavaScript میں سلسلہ کو بند کرنے کے لئے سیمکولنز (سینکلنز) کا استعمال اختیاری ہوتا ہے بازگشت JavaScript کا کسی بھی سلسلہ میں سلسلہ نکالنا بند کرتا ہے

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

بذریعہ نام نویسی کے ذریعہ آرائیج تک رسائی حاصل کی جاتی ہے

بسیاری از زبان‌های برنامه‌نویسی آرایه‌هایی با شماره‌های نامگذاری شده را پشتیبانی می‌کنند.

آرایه‌هایی با شماره‌های نامگذاری شده به عنوان آرایه‌های مرتبط (یا هش) شناخته می‌شوند.

جسٹا اسکریپٹ پشتیبانی نمی‌شودآرایه‌هایی با شماره‌های نامگذاری شده.

در JavaScript،آرایهاستفاده می‌شودشماره‌های عددی:

مثال

var person = [];
person[0] = "Bill";
person[1] = "Gates";
person[2] = 46;
var x = person.length;          // person.length به 3 برمی‌گردد
var y = person[0];              // person[0] به "Bill" برمی‌گردد

خود کا تجربہ کریں

در JavaScript،شیءاستفاده می‌شودشماره‌های نامگذاری شدهہم چاہتے ہیں، لیکن نہیں،

اگر از شماره‌های نامگذاری شده استفاده کنید، در زمان دسترسی به آرایه، JavaScript آرایه را به یک شیء استاندارد بازمی‌کند.

پس از بازتعریف خودکار، روش‌ها یا ویژگی‌های آرایه می‌توانند نتایج تعریف نشده یا نادرست تولید کنند:

مثال

var person = [];
person["firstName"] = "Bill";
person["lastName"] = "Gates";
person["age"] = 46;
var x = person.length;         // person.length به 0 برمی‌گردد
var y = person[0];              // person[0] به "undefined" برمی‌گردد

خود کا تجربہ کریں

از کاما برای پایان تعریف استفاده کنید

کاما در تعریف‌های شیء و آرایه در ECMAScript 5 قانونی است.

مثال روی یک شیء:

person = {firstName:"Bill", lastName:"Gates", age:62,};

مثال روی یک آرایه:

points = [35, 450, 2, 7, 30, 16,];

اخطار!!!

Internet Explorer 8 می‌تواند از کار بیفتد.

JSON اجازه نمی‌دهد که کاما در انتهای لیست داده باشد.

JSON:

person = {firstName:"Bill", lastName:"Gates", age:62};

JSON:

points = [35, 450, 2, 7, 30, 16];

Undefined نه Null است

اشیاء JavaScript، متغیرها، ویژگی‌ها و روش‌ها می‌توانند تعریف نشده باشند.

علاوه بر این، مقادیر اشیاء JavaScript خالی می‌تواند نولہم چاہتے ہیں، لیکن نہیں،

این ممکن است باعث شود که تست کردن اینکه آیا اشیاء خالی هستند یا خیر کمی دشوار شود.

شما می‌توانید نوع تست را بررسی کنید که آیا غیر معلوم،آیا اشیاء موجود هستند یا خیر را تست می‌کنیم:

مثال

اگر (typeof می اوبجیکٹ === "غیر معلوم")

خود کا تجربہ کریں

لیکن آپ نہیں کرسکتے کہ آپ نے اوبجیکٹ کو نول یا غیر معلوم کا جائزہ لینا چاہتے ہیں، نول، کیونکہ اگر اوبجیکٹ غیر معلوم ہوگا تو غلطی کا باعث بنتی ہوگی:

غیر درست:

اگر (می اوبجیکٹ === نول)

اس مسئلے کو حل کرانے کیلئے، اوبجیکٹ کو نول یا غیر معلوم کا جائزہ لینا چاہئیے، نول، بجائے غیر معلوم کا جائزہ لینے کا توقع نہیں رکھتا۔

لیکن یہ اب بھی غلطی کا باعث بنتی ہے:

غیر درست:

اگر (می اوبجیکٹ !== نول اور typeof می اوبجیکٹ !== "غیر معلوم")

اس لئے، غیر نول کا جائزہ لینے سے پہلے غیر معلوم کا جائزہ لینا چاہئیے:

درست:

اگر (typeof می اوبجیکٹ !== "غیر معلوم" اور می اوبجیکٹ !== نول)

خود کا تجربہ کریں

نئی بلک اسکائپ کا توقع نہیں رکھتا،

جسٹا اسکریپٹ غیر معلومکے لئے ہر کوڈ بلاک نئی سکائپ خالق کراتا ہے۔

بسیار سارے پروگرامنگ زبانوں میں یہ طرح کا حوالہ دیا جاتا ہے، لیکن جسٹا اسکریپٹ، غیر معلومہم چاہتے ہیں، لیکن نہیں،

اس کا خیال کیا جاتا ہے کہ یہ کد آئی کو بازورن کریگا، غیر معلوم، نئے جسٹا اسکریپٹ کا جائزہ لینے والوں کا عام غلطی ہے:

مثال

فار (واری ائی = 0; ائی < 10; ائی++) {
  // کوڈ بلاک
}
بازورن  آئی;

خود کا تجربہ کریں