۱۰ عجایب و اسرار درباره جاوا اسکریپت

JavaScript  در عین حال عجیب و غریب اما زیبا، مطمئنا زبان برنامه نویسی است که پابلو پیکاسو اختراع کرده است. ظاهرا Null یک شی است، یک آرایه خالی، ظاهرا برابر با دروغ است، و توابع در اطراف چسبیده می شوند به طوری که آنها توپ های تنیس بودند.

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

 

انواع داده ها و تعاریف

  1. Null شیء است

بیایید با عجیب و غریب جاوا اسکریپت مورد نظر همه را شروع کنیم، که همانند آن شناخته شده است. ظاهرا Null یک شی است، که تا آنجا که به تناقضات می رسد، درست است تا آنجا که بهترین آنها است. خالی؟ یک شی؟ “مطمئنا، تعریف null، عدم وجود ارزش معنادار است”. درست میگی اما این راه است. با وجود این، null نمونه ای از یک شیء نیست). در صورتی که نمی دانید مقادیر در جاوا اسکریپت نمونه هایی از اشیاء پایه هستند، بنابراین هر عدد نمونه ای از Object Number است، هر شی یک نمونه از Object Object است و غیره. این ما را به عقب می آورد عقلانیت، زیرا اگر فقدان، فقدان ارزش باشد، بدیهی است که نمی تواند نمونه ای از چیزی باشد.

 

  1. NaN یک عدد است

شما فکر می کنید که یک شی بودن مسخره است؟ سعی کنید با ایده “NaN” برخورد کنید – “نه یک عدد” – یک عدد است! علاوه بر این، NaN برابر با خود در نظر گرفته نمی شود! آیا سر شما هنوز صدمه دیده است؟

 

  1. Array بدون کلید == دروغ (درباره حقیقت و دروغ)

برای درک آنچه در اینجا اتفاق می افتد، باید مفاهیم حقیقت و فریب را درک کنید. این ها نوعی درست / غلط لایت هستند که تا حدودی خشم شما را در منطق یا فلسفه می گذارند. من بسیاری از توضیحات راجع به حقیقت و دروغ را می خوانم و احساس می کنم ساده ترین راه برای درک این است: در جاوا اسکریپت، هر مقدار غیر بولی دارای یک پرچم ساخته شده در رول است که هنگام خواندن مقدار از خواسته شده رفتار می شود مثل بولین مانند، برای مثال، هنگامی که آن را با یک بولی مقایسه می کنید. از آنجا که سیب ها را نمی توان با گلابی مقایسه کرد، وقتی جاوا اسکریپت برای مقایسه مقادیر انواع داده های مختلف خواسته می شود، ابتدا آنها را به یک نوع داده مشترک متصل می کند. اشتباه، صفر، صفر، نامشخص، رشته های خالی و NaN همه در نهایت تبدیل به اشتباه می شوند – نه به طور دائمی، فقط برای بیان شده است.

 

  1. جایگزین () می توانید تابع فراخوانی را قبول کنید

این یک جایگزین ساده است: یک رشته، یک ستاره. اما چه می شود اگر ما می خواستیم کنترل بیشتری بر چگونگی و زمان جایگزینی خود داشته باشیم؟ چه می شود اگر ما می خواستیم فقط اعداد زیر ۳۰ را جایگزین کنیم؟ با این کار تنها با عبارات منظم به دست نمی آید (همه چیز در مورد رشته ها، بعد از همه، ریاضی نیست). ما باید یک تابع فراخوانی را برای ارزیابی هر بازی پرش کنیم.

 

  1. عبارات منظم: فقط مطابقت و تعویض

بسیاری از توسعه دهندگان میانجی جاوا اسکریپت فقط با استفاده از بازی و با عبارات منظم جایگزین می شوند. اما جاوا اسکریپت روش های بیشتری را نسبت به این دو تعریف می کند. علاقه خاصی به آزمون () است که کار مشابهی را انجام می دهد مگر آنکه بازی ها را نشان نمی دهد: به سادگی نشان می دهد که آیا یک الگو مطابقت دارد یا خیر. به این معنا، از لحاظ محاسباتی سبک تر است.

 

  1. دامنه جعلی

محدوده ای که در آن چیزی اجرا می شود تعریف می کند چه متغیرهایی قابل دسترسی هستند. جاوا اسکریپت آزاد (یعنی جاوا اسکریپت که درون یک تابع اجرا نمی شود) در دامنه جهانی شیء پنجره عمل می کند، که همه چیز به آن دسترسی دارد؛ در حالی که متغیرهای محلی اعلام شده در داخل توابع تنها در آن عملکرد قابل دسترسی هستند، نه در خارج.

 

  1. توابع، خود را می توانند انجام دهند

نحو به اندازه کافی ساده است: ما یک تابع را اعلام می کنیم و بلافاصله آن را همانطور که توابع دیگر را با () syntax می نامیم، فراخوانی می کنیم. شما ممکن است تعجب کنید که چرا این کار را می کنیم. به نظر می رسد یک تضاد در اصطلاح: یک تابع به طور معمول حاوی کد است که ما می خواهیم بعدا اجرا کنیم نه در حال حاضر، در غیر این صورت ما کد را در یک تابع قرار نمی دهیم.

 

  1. فایرفاکس رنگ ها را در RGB، خوانده و رنگ می کند

من هرگز نمی فهمم که چرا موزیلا این کار را انجام می دهد. مطمئنا متوجه شده است که هر کسی بازجویی از رنگ های محاسبه شده از طریق جاوا اسکریپت علاقه مند به فرمت شش و نه RGB است.

 

  1. ۱ + ۰٫۲! == ۰٫۳

این یکی عجیب نیست فقط در جاوا اسکریپت؛ این در واقع یک مشکل غالب در علم کامپیوتر است و بر بسیاری از زبانها تاثیر می گذارد. خروجی این ۰٫۳۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۴ است. این موضوع مربوط به یک مسئله به نام دقت دستگاه است. هنگامی که جاوا اسکریپت سعی می کند خط بالا را اجرا کند، مقادیر را به معادلات دودویی آنها تبدیل می کند. این جایی است که مشکل شروع می شود. ۰٫۱ واقعا ۰٫۱ نیست، بلکه معادل دودویی آن است که یک مقدار نزدیک (اما نه یکسان) است. در اصل، به زودی به عنوان ارزش های خود را بنویسید، آنها محکوم به دقت خود را از دست می دهند. شما ممکن است فقط دو عدد زوج ساده را می خواهید، اما آنچه که به عنوان یادداشت های کریس پاین یاد می گیرید، ریاضی نقطه ی باینری است. به نظر می رسد که متن شما به زبان روسی ترجمه شده است اما زبان بلاروس را دریافت کنید. مشابه، اما نه همان.

 

  1. Undefined می تواند تعریف شود

خوب، بیایید به یک احمقانه و نه غیر ضروری تبدیل کنیم. تعجبی نیست که ممکن است به نظر برسد، undefined در واقع یک کلمه محدود در جاوا اسکریپت نیست، حتی اگر دارای معنای خاصی در طراحی سایت داشته باشد و تنها راه تعیین اینکه آیا متغیر نامشخص است.

0 دیدگاه برای “۱۰ عجایب و اسرار درباره جاوا اسکریپت”

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*