متن خبر

تایپ خطا در مقابل خطای مرجع در جاوا اسکریپت – تفاوت چیست؟

تایپ خطا در مقابل خطای مرجع در جاوا اسکریپت – تفاوت چیست؟

اخبارتایپ خطا در مقابل خطای مرجع در جاوا اسکریپت – تفاوت چیست؟
شناسهٔ خبر: 267042 -




خبرکاو:

به عنوان یک توسعه دهنده جاوا اسکریپت، احتمالاً هنگام کدنویسی با انواع مختلفی از خطاها مواجه شده اید. بیشتر اوقات اینها خطاهای نوع یا خطاهای مرجع هستند. اما آیا تا به حال فکر کرده اید که آنها چه معنایی دارند؟

آیا تا به حال سعی کرده اید قبل از حل این خطاها، نوع خطای تعیین شده توسط مترجم را بخوانید؟ اگر نه، باید، زیرا دانستن این خطاها می تواند به شما در حل مشکلات کمک کند.

به عنوان مثال، هنگامی که با یک خطا مواجه می شوید، احتمالاً آن را در گوگل جستجو می کنید. شما کل خطا را کپی و پیست می کنید و سعی می کنید با مراجعه به وب سایت ها و انجمن های مختلف راه حل را پیدا کنید. این یک روش آزمون و خطا برای یافتن و حل اشکالات است.

اما اگر از قبل می دانستید که چرا خطا به طور کلی رخ می دهد چه؟ این باعث صرفه جویی در وقت شما می شود که در غیر این صورت برای جستجوی راه حل های آنلاین صرف می کنید. درعوض، می‌توانید به تنهایی با نگاه کردن به نوع خطا به دنبال راه‌حل باشید.

در این راهنما، با دو نوع خطا که بیشتر با آن مواجه می شوند آشنا خواهید شد که عبارتند از خطای نوع و خطای مرجع. شما خواهید آموخت که چرا آنها رخ می دهند، تفاوت بین آنها، و چگونه از گرفتن این خطاها جلوگیری کنید.

توجه: انواع دیگری از خطاها در جاوا اسکریپت مانند خطاهای نحوی، خطاهای داخلی، خطاهای محدوده و خطاهای eval وجود دارد. اما دامنه این مقاله به دو خطای رایج محدود می شود.

خطای نوع چیست؟

خطاهای نوع زمانی رخ می دهد که از چیزی استفاده می کنید که قرار نیست در آن روش خاص استفاده شود. به عنوان مثال، به جای استفاده از چکش، از پیچ گوشتی برای چکش زدن به میخ استفاده کنید.

بیایید این را با استفاده از یک مثال درک کنیم:

 let a = 1 console.log(a()) //output Uncaught TypeError: a is not a function
خطای تایپ مثال 1

در اینجا a یک متغیر است که با یک مقدار مقدار دهی اولیه شده است. چون سعی کردید تابعی را با نام متغیر فراخوانی کنید با خطا مواجه شدید. یک متغیر را نمی توان به عنوان یک تابع فراخوانی کرد. توابع و متغیرها متفاوت عمل می کنند. پس در این مورد، شما یک خطای نوع دریافت می کنید. شما از متغیر let متفاوت از نوع آن استفاده کردید.

این به ما یک خطای نوع می دهد.

راه حل: برای رفع این خطا، باید به متغیر موجود در کنسول، همانطور که برای استفاده در نظر گرفته شده است، مراجعه کنید. در این حالت به جای تابع، a به عنوان متغیر ارسال می کنید.

 let a = 1 console.log(a) //output 1
راه حل خطای مثال 1 را تایپ کنید

بیایید مثال دیگری بزنیم:

 const a = 1 a = 2 // you reassign a const type variable again //output TypeError: Assignment to constant variable.
خطای مثال 2 را تایپ کنید

در اینجا، ما متغیر const نوع a به یک مقدار جدید اختصاص دادیم. اما شما نمی توانید متغیرهای const را به این صورت تغییر دهید، پس در این حالت با یک خطای نوع مواجه می شوید

راه حل: پس از تعریف متغیر نوع const ، هرگز آن را دوباره اختصاص ندهید.

 const a = 1 const b = 2 console.log(a, b) //output 1 2
راه حل خطای مثال 2 را تایپ کنید

در اینجا مثال دیگری با استفاده از یک آرایه آورده شده است:

 const myArray = [1,2,3,4] myArray = myArray.push(5) // reassign array //output TypeError: Assignment to constant variable.
خطای مثال 3 را تایپ کنید

در این مورد، نوع const myArray مجدداً اختصاص دادیم. این به ما یک خطای نوع می دهد زیرا باز هم، این نوع تخصیص مجدد برخلاف ویژگی های const است.

راه حل:

 const myArray = [1,2,3,4] myArray.push(5) // you can push new values //output [1,2,3,4,5]
راه حل خطای مثال 3 را تایپ کنید

شما به راحتی می توانید مقادیر جدید را بدون تخصیص مجدد آرایه به آن فشار دهید. این هیچ خطایی به شما نمی دهد. فشار دادن مقادیر به یک آرایه مجاز است. به این ترتیب می توانید از دریافت خطا جلوگیری کنید.

چگونه از دریافت خطای نوع جلوگیری کنیم

ساده ترین راه برای جلوگیری از خطاهای نوع، اجتناب از استفاده از نام های مشابه برای متغیرها و توابع مختلف است.

اگر از نام‌های مختلف استفاده کنید، اشتباه نمی‌کنید و یکی را با دیگری جایگزین نمی‌کنید و به راحتی می‌توانید از دریافت این خطا جلوگیری کنید.

راه دیگر این است که مطمئن شوید از متغیرها همانطور که قرار است استفاده شوند استفاده می کنید. به جای استفاده از const زمانی که نیاز به تخصیص مجدد یک مقدار دارید، از let (که اجازه این نوع تغییر را می دهد) استفاده کنید.

خطای مرجع چیست؟

خطاهای مرجع زمانی رخ می دهد که شما می خواهید به چیزی اشاره کنید یا از چیزی استفاده کنید که وجود ندارد. به عنوان مثال، به دنبال پیچ گوشتی در جعبه ابزار خود هستید، اما در آنجا نیست.

بیایید این را با استفاده از یک مثال درک کنیم:

 let a = 1 console.log(b) // undefined variable used //output Uncaught ReferenceError: b is not defined
خطای مرجع مثال 1

در اینجا، a یک متغیر است که با یک مقدار مقداردهی اولیه شده است. ما با خطا مواجه شدیم زیرا سعی کردیم متغیر b را که وجود ندارد را به صورت کنسولی وارد کنیم. ما هنوز چنین متغیری را اعلام نکرده بودیم، پس یک خطای مرجع در اینجا دریافت کردیم.

راه حل: فقط از متغیری که اعلام کرده اید استفاده کنید تا دچار خطا نشوید.

 let a = 1 console.log(a) // used defined variable //output 1
خطای مرجع مثال 1 راه حل

این هم یک مثال دیگر:

 if(true){ let a = 1 } console.log(a) //output ReferenceError: a is not defined
خطای مرجع مثال 2

در این مثال، ما سعی می کنیم به a از نوع let در خارج از بلوک آن دسترسی داشته باشیم. مفسر نمی تواند آن را در خارج از بلوک پیدا کند. این به ما یک خطا می دهد.

راه حل:

 if(true){ let a = 1 console.log(a) } //output 1
مرجع خطای مثال 2 راه حل

استفاده از متغیر در بلوک یا محدوده آن هیچ خطایی به شما نمی دهد.

بیایید یک مثال دیگر بزنیم، اما درک این یکی ممکن است دشوار باشد.

 if(true){ console.log(a) let a = 1 } //output ReferenceError: Cannot access 'a' before initialization
خطای مرجع مثال 3

a هنوز در محدوده خود است. اما با خطا مواجه می شویم. چرا؟ زیرا ما سعی می کنیم قبل از تعریف متغیر از آن استفاده کنیم. این مجاز نیست و برخلاف ویژگی های متغیر let است.

راه حل: از متغیر let فقط پس از تعریف استفاده کنید.

 if(true){ let a = 1 console.log(a) } //output 1
مرجع خطای مثال 3 راه حل

چگونه از دریافت خطای مرجع جلوگیری کنیم

ساده ترین راه برای جلوگیری از دریافت خطاهای مرجع مراجعه یا دسترسی به متغیرهای تعریف شده است. فقط از متغیرهای موجود استفاده کنید.

همچنین می‌توانید از دستورات شرطی و مدیریت خطا برای جلوگیری از اجرای کد در صورت نبود متغیر یا تابع استفاده کنید.

نتیجه

زمانی که می‌دانید چگونه خطاهای خود را برطرف کنید، می‌توانید به راحتی کد خود را اشکال زدایی کنید. خوب است خطاهای رایج و نحوه اجتناب از آنها را بدانید. این باعث صرفه جویی در وقت شما برای جستجوی راه حل های آنلاین و اتلاف ساعت ها در تلاش برای یافتن راه حل می شود، در صورتی که کمی دانش و آگاهی در مورد این موارد می تواند کمک کند.

برچسب‌ها

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است