جیاوزاسکریپت خطاهای رایج
- پچھلے پیج جس اسکریپٹ بہترین طریقوں
- آئندہ پیج جس اسکریپٹ پرفارمنس
اس فصل میں جسٹ اسکریپت میں کچھ عام غلطیاں درج کی گئی ہیں。
غلطی طور پر استعمال کردا ہے
کوئی غلطی، اگر 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; ائی++) { // کوڈ بلاک } بازورن آئی;
- پچھلے پیج جس اسکریپٹ بہترین طریقوں
- آئندہ پیج جس اسکریپٹ پرفارمنس