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

در این مقاله سعی خواهم کرد مثال ها و توضیحاتی از رایج ترین آنها ارائه دهم روش های جاوا اسکریپتمرتبط با رشته ها محبوب ترین روش ها برای راحتی در بالای مقاله قرار دارند.

تبدیل به رشته

می توانید یک عدد، بولی یا شی را به رشته تبدیل کنید.

Var myNumber = 24; // 24 var myString = myNumber.toString(); // "24"

همچنین می توانید دستکاری مشابهی را با استفاده از تابع string() انجام دهید.

Var myNumber = 24; // 24 var myString = String(myNumber); // "24"

Nicholas Zakas می گوید: "اگر در مورد مقدار (تهی یا تعریف نشده) مطمئن نیستید، از تابع String() استفاده کنید، زیرا بدون توجه به نوع متغیر، یک رشته را برمی گرداند."

تعریف نشدهبه این معنی که به متغیر هیچ مقداری اختصاص داده نمی شود، a خالی، - که یک مقدار خالی به آن اختصاص داده شده است (می توان گفت null به عنوان یک شی خالی تعریف می شود).

یک رشته را به زیر رشته ها تقسیم کنید

برای تقسیم یک رشته به آرایه ای از زیر رشته ها می توانید از متد split() استفاده کنید:

Var myString = "در حال، جدا، در، کاما"; var substringArray = myString.split(""); // ["coming"، "Apart"، "at"، "the"، "Commas"] var arrayLimited = myString.split(")، 3); // ["آمدن"، "جدا"، "در"]

همانطور که خط آخر نشان می دهد، مقدار آرگومان اختیاری دوم تعداد عناصر آرایه برگشتی را تعیین می کند.

طول رشته را دریافت کنید

با استفاده از ویژگی length می توانید تعداد کاراکترهای یونیکد را در یک رشته پیدا کنید:

Var myString = "شما" کاملا یک شخصیت هستید."؛ var stringLength = myString.length؛ // 25

یک رشته فرعی را در یک رشته تعریف کنید

دو راه برای رسیدن به برنامه وجود دارد:

از indexOf() استفاده کنید:

Var stringOne = "جانی والدو هریسون والدو"; var WheresWaldo = stringOne.indexOf("Waldo"); // 7

متد indexOf() یک زیررشته (اولین آرگومان ارسال شده) را در یک رشته (از ابتدای رشته) جستجو می کند و موقعیت اولین کاراکتر را که رشته فرعی از آنجا شروع به ظاهر شدن در رشته کرده است، برمی گرداند.

از lastIndexOf() استفاده کنید:

Var stringOne = "جانی والدو هریسون والدو"; var wheresWaldo = stringOne.lastIndexOf("Waldo"); // 22

متد lastIndexOf() همه کارها را یکسان انجام می دهد، با این تفاوت که به دنبال آخرین زیررشته ای می گردد که در رشته وجود دارد.

اگر رشته فرعی پیدا نشد، هر دو روش -1 را برمی‌گردانند. آرگومان اختیاری دوم موقعیتی را در رشته ای که می خواهید جستجو را شروع کنید مشخص می کند. بنابراین، اگر آرگومان دوم متد indexOf() 5 باشد، جستجو از کاراکتر پنجم شروع می‌شود و کاراکترهای 0-4 نادیده گرفته می‌شوند. برای lastIndexOf() ، همچنین اگر آرگومان دوم 5 باشد، جستجو در جهت مخالف شروع می شود و کاراکترهای 6 به بالا نادیده گرفته می شوند.

نحوه تعویض بخشی از یک رشته

برای جایگزینی بخشی (یا حتی تمام) یک رشته، از متد ()replace استفاده کنید.

Var slugger = "جاش همیلتون"; var betterSlugger = slugger.replace("h Hamilton", "e Bautista"); console.log(betterSlugger); // "خوزه باتیستا"

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

برای جایگزینی تمام رخدادهای یک رشته فرعی، استفاده کنید عبارت منظمبا پرچم "g".

Var myString = "او پوسته های خودرو را در ساحل خودرو می فروشد"; var newString = myString.replace(/automotive/g, "sea"); console.log(newString); // "او صدف های دریایی را در ساحل می فروشد"

آرگومان دوم ممکن است شامل زیر رشته یا تابعی باشد که باید جایگزین شود.

یک شخصیت را در یک موقعیت مشخص پیدا کنید

برای اینکه بفهمید کدام کاراکتر در یک موقعیت معین قرار دارد، می توانید از متد charAt() استفاده کنید:

Var myString = "Birds of a Feather"; var whatsAtSeven = myString.charAt(7); // "f"

همانطور که اغلب در جاوا اسکریپت اتفاق می افتد، اولین موقعیت از 0 شروع می شود نه از 1.

همچنین می توانید از متد ()charCodeAt استفاده کنید، اما به جای خود کاراکتر، کد آن را دریافت خواهید کرد.

Var myString = "Birds of a Feather"; var whatsAtSeven = myString.charCodeAt(7); // "102" var whatsAtEleven = myString.charCodeAt(11); // "70"

توجه داشته باشید که کد یک حرف بزرگ (موقعیت 11) با کد همان حرف کوچک (موقعیت 7) متفاوت است.

الحاق رشته در جاوا اسکریپت

در بیشتر موارد، از عملگر (+) برای به هم پیوستن رشته ها استفاده خواهید کرد. اما می توانید رشته ها را با استفاده از متد ()concat به هم متصل کنید.

Var stringOne = "Knibb High Football"; var stringTwo = stringOne.concat("قوانین."); // "قوانین فوتبال Knibb High"

رشته های متعددی را می توان به concat() ارسال کرد و رشته حاصل به ترتیبی که به متد concat() اضافه شد ظاهر می شود.

Var stringOne = "Knibb"; var stringTwo = "بالا"; var stringThree = "فوتبال"; var stringFour = "قوانین."; var finalString = stringOne.concat(stringTwo, stringThree, stringFour); console.log(finalString); // "قوانین بالای فوتبال Knibb."

بخشی از یک رشته (استخراج رشته فرعی در جاوا اسکریپت)

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

استفاده از slice():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.slice(5, 10); // "فغیج"

استفاده از ()substring:

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substring(5, 10); // "فغیج"

برای هر دو متد (slice() و substring())، آرگومان اول موقعیت کاراکتری است که رشته فرعی در آن شروع می شود (شمارش از 0)، آرگومان دوم موقعیت کاراکتری است که رشته فرعی در آن به پایان می رسد، و کاراکتر تعیین شده در آرگومان دوم در زیر رشته برگشتی گنجانده نشده است.

استفاده از substr():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substr(5, 10); // "فغیجکلمنو"

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

تبدیل رشته به حروف کوچک یا بزرگ در جاوا اسکریپت

چهار روش برای انجام تبدیل های لازم وجود دارد. دو برای تبدیل کاراکترهای رشته به حروف بزرگ.

Var stringOne = "صحبت کن، من نمی توانم تو را بشنوم."; var stringTwo = stringOne.toLocaleUpperCase(); // "SPEAK UP، I CAN"THEAR YOU" var stringThree = stringOne.toUpperCase(); // "صحبت کن، من نمی توانم تو را بشنوم"

و دو تا برای تبدیل رشته به حروف کوچک:

Var stringOne = "تو نباید فریاد بزنی"؛ var stringTwo = stringOne.toLocaleLowerCase(); // "شما مجبور نیستید فریاد بزنید" var stringThree = stringOne.toLowerCase(); // "تو مجبور نیستی فریاد بزنی"

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

تطبیق الگو در جاوا اسکریپت

با استفاده از 2 روش می توانید وجود یک الگو را در یک رشته بررسی کنید.

متد match() بر روی یک شی رشته فراخوانی می شود و یک عبارت منظم را به عنوان آرگومان به متد match() ارسال می کند.

Var myString = "چقدر چوب می تواند یک چوب چاک کند"; var myPattern = /.ood/; var myResult = myString.match(myPattern); // ["چوب"] var patternLocation = myResult.index; // 9 var originalString = myResult.input // "چقدر چوب می تواند یک چوب چاک کند"

و متد exec() روی شی RegExp فراخوانی می شود و رشته را به عنوان آرگومان ارسال می کند:

Var myString = "چقدر چوب می تواند یک چوب چاک کند"; var myPattern = /.huck/; var myResult = myPattern.exec(myString); // ["چاک"] var patternLocation = myResult.index; // 27 var originalString = myResult.input // "چقدر چوب می تواند یک چوب چاک کند"

هر دو روش اولین اتفاقی را که منطبق است برمی گرداند. اگر هیچ منطبقی یافت نشد، NULL برگردانده خواهد شد. اگر عبارت منظم دارای پرچم "g" باشد، نتیجه آرایه ای خواهد بود که شامل همه موارد منطبق است.

همچنین می‌توانید از متد search() استفاده کنید که یک عبارت منظم را به عنوان آرگومان می‌گیرد و موقعیت شروع اولین الگوی مطابق را برمی‌گرداند.

Var myString = "فرض"; var patternLocation = myString.search(/ume/); // 3

اگر هیچ منطبقی یافت نشد، متد -1 را برمی‌گرداند.

مقایسه دو رشته برای مرتب سازی بعدی

برای مقایسه دو رشته بر اساس ترتیب مرتب سازی محلی، می توانید از روش localeCompare استفاده کنید. متد localeCompare سه مقدار ممکن را برمی گرداند.

MyString = "مرغ"; var myStringTwo = "تخم مرغ"; var whichCameFirst = myString.localeCompare(myStringTwo); // -1 (به جز کروم که -2 را برمی گرداند) whichCameFirst = myString.localeCompare("chicken"); // 0 whichCameFirst = myString.localeCompare("apple"); // 1 (Chrome 2 را برمی گرداند)

همانطور که در بالا نشان داده شد، اگر رشته اصلی قبل از آرگومان رشته مرتب شود، یک مقدار منفی برگردانده می شود؛ اگر آرگومان رشته بعد از رشته اصلی مرتب شود، +1 برگردانده می شود. اگر برگردانده شود مقدار صفر، دو رشته معادل هستند.

وقتی می نویسی جاوا اسکریپت، اغلب برای جستجوی اطلاعات در مورد نحو و پارامترهای متدهایی که با رشته ها کار می کنند، باید در اینترنت گشت و گذار کنید.

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

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

تبدیل به رشته

می توانید یک عدد، عبارت بولی یا شی را به یک رشته تبدیل کنید:

Var myNumber = 24; // 24 var myString = myNumber.toString(); // "24"

می توانید با همین روش انجام دهید رشته ():

Var myNumber = 24; // 24 var myString = String(myNumber); // "24"

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

تقسیم یک رشته به زیر رشته ها

برای تقسیم رشته ها به آرایه ای از زیررشته ها می توانید از روش استفاده کنید شکاف():

Var myString = "در حال، جدا، در، کاما"; var substringArray = myString.split(""); // ["coming"، "Apart"، "at"، "the"، "Commas"] var arrayLimited = myString.split(")، 3); // ["آمدن"، "جدا"، "در"]

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

به دست آوردن طول یک رشته

برای یافتن تعداد کاراکترهای یک رشته، از ویژگی استفاده می کنیم طول:

Var myString = "شما" کاملا یک شخصیت هستید."؛ var stringLength = myString.length؛ // 25

پیدا کردن یک رشته فرعی در یک رشته

دو روش برای جستجوی زیر رشته وجود دارد:

استفاده indexOf():

Var stringOne = "جانی والدو هریسون والدو"; var WheresWaldo = stringOne.indexOf("Waldo"); // 7

indexOf()این متد جستجوی یک زیررشته را از ابتدای رشته شروع می کند و موقعیت آغاز اولین وقوع رشته فرعی را برمی گرداند. در این مورد - موقعیت 7.

استفاده lastIndexOf():

Var stringOne = "جانی والدو هریسون والدو"; var wheresWaldo = stringOne.lastIndexOf("Waldo"); // 22

این روش موقعیت شروع آخرین وقوع یک رشته فرعی در یک رشته را برمی گرداند.

هر دو روش در صورت یافت نشدن رشته فرعی -1 را برمی‌گردانند و هر دو آرگومان دوم اختیاری را می‌گیرند که موقعیتی را در رشته‌ای که می‌خواهید جستجو آغاز شود را نشان می‌دهد. بنابراین اگر آرگومان دوم "5" باشد، indexOf()جستجو را از کاراکتر 5 شروع می‌کند و کاراکترهای 0-4 را نادیده می‌گیرد lastIndexOf()جستجو را از کاراکتر 5 شروع می کند و به عقب کار می کند و کاراکترهای 6 و بالاتر را نادیده می گیرد.

جایگزینی رشته فرعی

برای جایگزینی وقوع یک رشته فرعی در یک رشته با رشته فرعی دیگر، می توانید استفاده کنید جایگزین کردن():

Var slugger = "جاش همیلتون"; var betterSlugger = slugger.replace("h Hamilton", "e Bautista"); console.log(betterSlugger); // "خوزه باتیستا"

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

برای جایگزینی همه رخدادها، باید از یک عبارت منظم با یک پرچم سراسری استفاده کنید:

Var myString = "او پوسته های خودرو را در ساحل خودرو می فروشد"; var newString = myString.replace(/automotive/g, "sea"); console.log(newString); // "او صدف های دریایی را در ساحل می فروشد"

آرگومان دوم ممکن است شامل یک الگو یا تابع خاص باشد. می توانید بیشتر بخوانید.

یک کاراکتر در یک موقعیت معین در یک رشته دریافت کنید

می توانیم نماد را با استفاده از تابع بدست آوریم charAt():

Var myString = "Birds of a Feather"; var whatsAtSeven = myString.charAt(7); // "f"

همانطور که اغلب در جاوا اسکریپت اتفاق می افتد، اولین موقعیت در رشته از 0 شروع می شود نه 1.

به عنوان یک تابع جایگزین می توانید استفاده کنید charCodeAt()تابع، که کد کاراکتر است.

Var myString = "Birds of a Feather"; var whatsAtSeven = myString.charCodeAt(7); // "102" var whatsAtEleven = myString.charCodeAt(11); // "70"

توجه داشته باشید که کد کاراکتر "F" (موقعیت 11) با کاراکتر "f" (موقعیت 7) متفاوت است.

رشته های به هم پیوسته

در بیشتر موارد، می توانید از عملگر "+" برای به هم پیوستن رشته ها استفاده کنید. اما شما همچنین می توانید از روش استفاده کنید concat():

Var stringOne = "Knibb High Football"; var stringTwo = stringOne.concat("قوانین."); // "قوانین فوتبال Knibb High"

به این ترتیب می‌توانیم بسیاری از خطوط را به ترتیبی که نوشته شده‌اند در یک خط ترکیب کنیم:

Var stringOne = "Knibb"; var stringTwo = "بالا"; var stringThree = "فوتبال"; var stringFour = "قوانین."; var finalString = stringOne.concat(stringTwo, stringThree, stringFour); console.log(finalString); // "قوانین بالای فوتبال Knibb."

استخراج زیر رشته

3 راه برای دریافت یک رشته از بخشی از رشته دیگر وجود دارد:

استفاده كردن تکه():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.slice(5, 10); // "فغیج"

استفاده كردن زیر رشته ():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substring(5, 10); // "فغیج"

در هر دو تابع، پارامتر اول کاراکتری است که رشته فرعی با آن شروع می شود (از موقعیت 0 شروع می شود) و آرگومان دوم (اختیاری) موقعیت کاراکتری است که رشته فرعی به آن برگردانده می شود. مثال (5، 10) رشته بین موقعیت های 5 و 9 را برمی گرداند.

استفاده كردن substr():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substr(5, 10); // "فغیجکلمنو"

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

یک رشته را به حروف بزرگ یا کوچک تبدیل کنید.

4 روش برای ترجمه وجود دارد. 2 مورد اول رشته را به حروف بزرگ تبدیل می کند:

Var stringOne = "صحبت کن، من نمی توانم تو را بشنوم."; var stringTwo = stringOne.toLocaleUpperCase(); // "SPEAK UP، I CAN"THEAR YOU" var stringThree = stringOne.toUpperCase(); // "صحبت کن، من نمی توانم تو را بشنوم"

2 مورد دیگر رشته را به حروف کوچک تبدیل می کنند:

Var stringOne = "تو نباید فریاد بزنی"؛ var stringTwo = stringOne.toLocaleLowerCase(); // "شما مجبور نیستید فریاد بزنید" var stringThree = stringOne.toLowerCase(); // "تو مجبور نیستی فریاد بزنی"

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

تطبیق الگو

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

روش همخوانی داشتن()به یک رشته اعمال می شود و یک عبارت منظم را به عنوان پارامتر می گیرد:

Var myString = "چقدر چوب می تواند یک چوب چاک کند"; var myPattern = /.ood/; var myResult = myString.match(myPattern); // ["چوب"] var patternLocation = myResult.index; // 9 var originalString = myResult.input // "چقدر چوب می تواند یک چوب چاک کند"

روش exec()به یک شیء عبارت منظم اعمال می شود و رشته را به عنوان پارامتر می گیرد:

Var myString = "چقدر چوب می تواند یک چوب چاک کند"; var myPattern = /.huck/; var myResult = myPattern.exec(myString); // ["چاک"] var patternLocation = myResult.index; // 27 var originalString = myResult.input // "چقدر چوب می تواند یک چوب چاک کند"

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

شما همچنین می توانید از روش استفاده کنید جستجو کردن()که یک عبارت منظم می گیرد و موقعیت اولین تطابق را در الگو برمی گرداند:

Var myString = "فرض"; var patternLocation = myString.search(/ume/); // 3

اگر هیچ مسابقه ای وجود نداشت، -1 «.

مقایسه دو رشته برای مرتب سازی

می توانید 2 رشته را با هم مقایسه کنید تا مشخص کنید کدام یک در الفبا اول است. برای این کار از روش استفاده خواهیم کرد localeCompare()که 3 مقدار ممکن را برمی گرداند:

Var myString = "مرغ"; var myStringTwo = "تخم مرغ"; var whichCameFirst = myString.localeCompare(myStringTwo); // -1 (Chrome -2 را برمی گرداند) whichCameFirst = myString.localeCompare("chicken"); // 0 whichCameFirst = myString.localeCompare("apple"); // 1 (Chrome 2 را برمی گرداند)

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

برای بررسی مقدار بازگشتی بهتر است از if (نتیجه< 0), чем if (result === -1). Последнее не будет работать в Chrome.

از توجه شما متشکرم، امیدوارم چیزهای جدید و جالب زیادی یاد گرفته باشید!

نویسنده مقاله: الکس. دسته بندی:
تاریخ انتشار: 1392/03/19

عملوندهای عملگرهای مقایسه می توانند مقادیر عددی یا رشته ای باشند. هنگام استفاده از یونیکد، رشته ها بر اساس ترتیب واژگانی استاندارد مقایسه می شوند.

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

  • دو رشته اگر دارای توالی یکسانی از کاراکترها باشند کاملاً برابر هستند
  • دو عدد اگر به معنای معمولی کلمه برابر باشند کاملاً برابر هستند. +0 دقیقاً برابر با -0 است.
  • NaN مطلقاً با هیچ چیز از جمله NaN برابر نیست
  • دو عملوند بولی اگر هر دو درست یا نادرست باشند کاملاً برابر هستند
  • دو عملوند شیء اگر ارجاعاتی به یک شی مشترک باشند کاملاً برابر هستند
  • Null و Undefined برابر == هستند اما کاملاً برابر نیستند ===

جدول زیر عملگرهای مقایسه را شرح می دهد:

اپراتور شرح مثال‌هایی که وقتی var1=3، var2=4 هستند true برمی‌گردانند
برابر (==) اگر دو عملوند یک نوع نباشند، جاوا اسکریپت انواع را تبدیل کرده و به شدت با هم مقایسه می کند. اگر هر عملوند یک عدد یا یک مقدار بولی باشد، عملوندها به اعداد تبدیل می شوند. اگر هر عملوندی یک رشته باشد، عملوند دوم به رشته تبدیل می شود

3 == var1
"3" == var1
3 == "3"

مساوی نیست (!=) اگر عملوندها برابر نباشند مقدار true را برمی گرداند. اگر عملوندها داشته باشند نوع مختلف، جاوا اسکریپت را تبدیل می کند.

var1 != 4
var1 != "5"

کاملاً برابر (===) اگر عملوندها کاملاً برابر باشند (به بالا مراجعه کنید)، بدون تبدیل نوع، مقدار true را برمی‌گرداند.
کاملاً برابر نیست (!==) اگر عملوندها کاملاً برابر نباشند (به بالا مراجعه کنید) یا از انواع مختلف باشند، مقدار true را برمی‌گرداند.

var2 !== 3
3 !== "3"

بیشتر (>) اگر عملوند چپ بزرگتر از عملوند راست باشد مقدار true را برمی گرداند.
بزرگتر یا مساوی با (>=) اگر عملوند چپ بزرگتر یا مساوی با عملوند راست باشد، مقدار true را برمی گرداند.

var2 >= var1
var1 >= 3

کمتر (<) اگر عملوند چپ کمتر از عملوند راست باشد، مقدار true را برمی‌گرداند.
کمتر یا مساوی (<=) اگر عملوند چپ کمتر یا مساوی با عملوند راست باشد، مقدار true را برمی‌گرداند.

var1<= var2
var2<= 5

استفاده از عملگرهای مقایسه

عملگرهای برابری استاندارد (== و !=) دو عملوند را بدون توجه به نوع آنها مقایسه می کنند. برابری دقیق (=== و !==) عملوندهای هم نوع را مقایسه می کند. اگر عملوندها باید نوع و مقدار یکسانی داشته باشند از برابری دقیق استفاده کنید. در غیر این صورت، از عملگرهای برابری معمولی استفاده کنید، که به شما امکان می‌دهد برابری عملوندها را حتی اگر از انواع مختلف باشند، آزمایش کنید.

هنگام تبدیل انواع، جاوا اسکریپت تبدیل می شود رشته , عدد , بولیو هدف - شیبه روش زیر:

  • هنگام مقایسه یک عدد و یک رشته، رشته به یک مقدار عددی تبدیل می شود. در این مورد، جاوا اسکریپت مقدار عددی را از یک رشته واقعی دریافت می کند: "123" == 123.
  • اگر یکی از عملوندها بولی باشد، اگر درست باشد به 1 و اگر نادرست باشد به +0 تبدیل می شود.
  • اگر یک شی با یک عدد یا رشته مقایسه شود، جاوا اسکریپت سعی می کند مقدار مربوط به شی را بدست آورد. با استفاده از متدهای valueOf و toString یک شی را به مقدار، رشته یا عدد اولیه تبدیل می کند. اگر شیء قابل تبدیل نباشد، یک خطای زمان اجرا ایجاد می شود.

فوراً به شما هشدار می دهم، بله، مقاله کمی نادرست است، به نظرات خوش آمدید، توضیحات خوبی در آنجا وجود دارد).

روز خوب.

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

عملگر == برای برابری مقایسه می کند، اما === برای هویت مقایسه می کند. مزیت عملگر === این است که دو مقدار را به یک نوع ارسال نمی کند. به همین دلیل است که معمولا استفاده می شود.

Abc == تعریف نشده; // درست است اگر abc = تعریف نشده | null abc === تعریف نشده; // true - فقط اگر abc = تعریف نشده باشد!
abc == false; // true اگر abc = false | 0 | "" | abc === false; // درست است فقط اگر abc = false!
به هر حال، اشتباه گرفتن false و 0 (یا ""، یا ) ایده خوبی نیست.

البته:
5 === 5; // true true === true; // true "abc" === "abc"; // درست است، واقعی

و حالا یک مثال جالب.
5 == 5; // درست 5 === 5; // true new Number(5) == 5; // true new number(5) === 5; // دروغ!

چرا این اتفاق می افتد؟ بله، هر عددی یک شی از کلاس Number است. اما شما می توانید یک عدد را به عنوان یک عدد نشان دهید - با مقداری ثابت. یک بار اعلام می شود و همیشه با خودش یکسان است. اما در عین حال، هنگام اعلام یک شی جدید از کلاس Number، از نظر مقدار با آن برابر است، اما یکسان نیست (زیرا این دو شی کاملاً متفاوت از کلاس Number هستند).

آرایه ها/اشیاء

اما برای آرایه ها و اشیاء، هر دو عملگر به یک شکل عمل می کنند و برای هویت مقایسه می شوند:
var a = (); a == (); // غلط a === (); // غلط a == a; // true a === a; // درست است، واقعی

برای مقایسه آرایه ها و اشیاء، می توانید یک تابع خاص بنویسید:
تابع isEq(a, b)( if(a == b) true را برمی گرداند؛ for(var i در a)( if(!isEq(a[i], b[i])) false؛ ) for(var i در ب)(اگر(!isEq(a[i]، b[i])) false را برگردانید؛ ) true را برگردانید؛ )
کمی شلخته، دو چرخه و تقریباً دارای مالکیت استیادم رفت؛ خوب، این کار خواهد شد.

این<-

یک دام دیگر وجود دارد. این انتقال به این است.
(function())( this == 5; // true this === 5; // false )).call(5);

این لحظه است. ارزش فراموش کردن او را دارد.

جمع...

خوب، حالا بیایید تصور کنیم که ما در حال نوشتن سوپر فریم ورک خودمان هستیم، و به طور فعال از عملگر === به جای == استفاده می کنیم، فقط به این دلیل که زیباتر است، و شخصی چندین اشکال را با ما پیدا می کند.
func(شماره جدید(5)); (function())(func(this); )).call(5);

آیا چنین نمونه هایی غیرقابل اجرا به نظر می رسند؟ لطفا!

جی کوئری:
$.each(, function())(func(this); ));

خوب، یا می خواستم تعداد را گسترش دهم.
var Five = new Number(5); Five.a = 2; // می خواست گسترش یابد، اما 5 به سادگی گسترش نمی یابد // در اینجا ما به نوعی از آن استفاده می کنیم... func(Five);

این همه است، امیدوارم برای کسی مفید باشد. با تشکر از توجه شما.