تفاوت میان نسخه‌های «JavaScript:رشته‌های متنی (string) در جاوااسکریپت»

از ویکی کد
پرش به ناوبری پرش به جستجو
(صفحه‌ای تازه حاوی «JavaScript strings are used for storing and manipulating text. رشته های متنی در جاوااسکریپت برای ذخیره و...» ایجاد کرد)
 
سطر ۱: سطر ۱:
 
JavaScript strings are used for storing and manipulating text.
 
JavaScript strings are used for storing and manipulating text.
  
رشته های متنی در جاوااسکریپت برای ذخیره و ویرایش متن ها استفاده میشوند .  
+
رشته‌های متنی در جاوااسکریپت برای ذخیره و ویرایش متن‌ها استفاده می‌شوند.
  
 
== JavaScript Strings ==
 
== JavaScript Strings ==
رشته ها در جاوااسکریپت
+
رشته‌ها در جاوااسکریپت
  
 
A JavaScript string is zero or more characters written inside quotes.
 
A JavaScript string is zero or more characters written inside quotes.
  
یک رشته متنی در جاوااسکریپت  از صفر تا کاراکتر های بیشتری را در زمانی که داخل کوتیشن نوشته می شود در بر میگیرد .  
+
یک رشته متنی در جاوااسکریپت از صفر تا کاراکترهای بیشتری را در زمانی که داخل کوتیشن نوشته می‌شود در بر می‌گیرد.
  
 
=== Example ===
 
=== Example ===
سطر ۱۵: سطر ۱۵:
 
You can use single or double quotes:
 
You can use single or double quotes:
  
شما می توانید از تک کوتیشن ′ و یا دو کوتیشن ″ استفاده کنید :
+
شما می‌توانید از تک کوتیشن ′ یا دو کوتیشن ″ استفاده کنید:
  
 
=== Example ===
 
=== Example ===
var carName1 = "Volvo XC60";  // Double quotes
+
var carName1 = "Volvo XC60"; // Double quotes
  
var carName2 = 'Volvo XC60';  // Single quotes  
+
var carName2 = 'Volvo XC60'; // Single quotes
  
 
You can use quotes inside a string, as long as they don't match the quotes surrounding the string:
 
You can use quotes inside a string, as long as they don't match the quotes surrounding the string:
  
شما می توانید از کوتیشن ها درون یک رشته متنی استفاده کنید البته به شرطی که کوتیشنی که درون رشته متنی استفاده می کنید با کوتیشنی که رشته متنی درون آن قرار گرفته همخوانی نداشته باشد :
+
شما می‌توانید از کوتیشن‌ها درون یک رشته متنی استفاده کنید البته به شرطی که کوتیشنی که درون رشته متنی استفاده می‌کنید با کوتیشنی که رشته متنی درون آن قرار گرفته همخوانی نداشته باشد:
  
 
=== Example ===
 
=== Example ===
سطر ۳۸: سطر ۳۸:
 
To find the length of a string, use the built-in <code>length</code> property:
 
To find the length of a string, use the built-in <code>length</code> property:
  
برای پیدا کردن طول یک رشته متنی ، از ویژگی length استفاده کنید :
+
برای پیدا کردن طول یک رشته متنی، از ویژگی length استفاده کنید:
  
 
=== Example ===
 
=== Example ===
 
var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 
var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  
var sln = txt.length;  
+
var sln = txt.length;
  
 
== Escape Character ==
 
== Escape Character ==
سطر ۵۰: سطر ۵۰:
 
Because strings must be written within quotes, JavaScript will misunderstand this string:
 
Because strings must be written within quotes, JavaScript will misunderstand this string:
  
از آنجایی که رشته های متنی می بایست درون کوتیشن ها نوشته شوند ، جاوااسکریپت رشته متنی زیر را درست درک نمی کند :
+
از آنجایی که رشته‌های متنی می‌بایست درون کوتیشن‌ها نوشته شوند، جاوااسکریپت رشته متنی زیر را درست درک نمی‌کند:
  
 
var x = "We are the so-called "Vikings" from the north.";
 
var x = "We are the so-called "Vikings" from the north.";
سطر ۵۶: سطر ۵۶:
 
The string will be chopped to "We are the so-called ".
 
The string will be chopped to "We are the so-called ".
  
رشته متنی فوق به "We are the so-called " خلاصه خواهد شد .  
+
رشته متنی فوق به "We are the so-called " خلاصه خواهد شد.
  
 
The solution to avoid this problem, is to use the '''backslash escape character'''.
 
The solution to avoid this problem, is to use the '''backslash escape character'''.
  
راه حل این مشکل استفاده از '''علامت بک اسلش یا \''' قبل از کاراکتر است .  
+
راه حل این مشکل استفاده از '''علامت بک اسلش یا \''' قبل از کاراکتر است.
  
 
The backslash (<code>\</code>) escape character turns special characters into string characters:
 
The backslash (<code>\</code>) escape character turns special characters into string characters:
  
کاراکتر بک اسلش( \) موجب می شود که کاراکترهای به خصوص همانند کوتیشن به کاراکتر های متنی یا رشته ای تبدیل شوند :
+
کاراکتر بک اسلش(\) موجب می‌شود که کاراکترهای به خصوص همانند کوتیشن به کاراکترهای متنی یا رشته‌ای تبدیل شوند:
 
{| class="wikitable"
 
{| class="wikitable"
 
|کد
 
|کد
سطر ۸۲: سطر ۸۲:
 
|بک اسلش
 
|بک اسلش
 
|}
 
|}
The sequence <code>\"</code>  inserts a double quote in a string:
+
The sequence <code>\"</code> inserts a double quote in a string:
  
عبارت \″ موجب ایجاد دو کوتیشن یا ″ در یک رشته متنی می شود :
+
عبارت \″ موجب ایجاد دو کوتیشن یا ″ در یک رشته متنی می‌شود:
  
 
=== Example ===
 
=== Example ===
var x = "We are the so-called \"Vikings\" from the north.";  
+
var x = "We are the so-called \"Vikings\" from the north.";
  
The sequence <code>\'</code>  inserts a single quote in a string:
+
The sequence <code>\'</code> inserts a single quote in a string:
  
عبارت  \′ موجب ایجاد تک کوتیشن یا ′ در یک رشته متنی می شود :
+
عبارت \′ موجب ایجاد تک کوتیشن یا ′ در یک رشته متنی می‌شود:
  
 
=== Example ===
 
=== Example ===
 
var x = 'It\'s alright.';
 
var x = 'It\'s alright.';
  
The sequence <code>\\</code>  inserts a backslash in a string:
+
The sequence <code>\\</code> inserts a backslash in a string:
  
عبارت \\ یک بک اسلش درون یک رشته متنی ایجاد می کند :
+
عبارت \\ یک بک اسلش درون یک رشته متنی ایجاد می‌کند:
  
 
=== Example ===
 
=== Example ===
سطر ۱۰۵: سطر ۱۰۵:
 
Six other escape sequences are valid in JavaScript:
 
Six other escape sequences are valid in JavaScript:
  
شش عبارت معتبر دیگر برای تبدیل کاراکترها در جاوااسکریپت :
+
شش عبارت معتبر دیگر برای تبدیل کاراکترها در جاوااسکریپت:
 
{| class="wikitable"
 
{| class="wikitable"
|کد  
+
|کد
 
|نتیجه
 
|نتیجه
 
|-
 
|-
سطر ۱۳۰: سطر ۱۳۰:
 
The 6 escape characters above were originally designed to control typewriters, teletypes, and fax machines. They do not make any sense in HTML.
 
The 6 escape characters above were originally designed to control typewriters, teletypes, and fax machines. They do not make any sense in HTML.
  
شش کاراکتر بالا در حقیقت برای کنترل ماشین های تحریر ، ماشین های ترجمه و دستگاه فکس طراحی شده اند . آنها نقشی در html ندارند .  
+
شش کاراکتر بالا در حقیقت برای کنترل ماشین‌های تحریر، ماشین‌های ترجمه و دستگاه فکس طراحی شده‌اند. آنها نقشی در html ندارند.
  
 
== Breaking Long Code Lines ==
 
== Breaking Long Code Lines ==
کوچکتر کردن کد های طولانی  
+
کوچکتر کردن کدهای طولانی
  
 
For best readability, programmers often like to avoid code lines longer than 80 characters.
 
For best readability, programmers often like to avoid code lines longer than 80 characters.
  
برای خواناتر شدن کد ، برنامه نویس ها اغلب دوست دارند که طول کد هایشان در هر خط بیشتر از 80 کاراکتر نباشد .  
+
برای خواناتر شدن کد، برنامه‌نویس‌ها اغلب دوست دارند که طول کدهایشان در هر خط بیشتر از ۸۰ کاراکتر نباشد.
  
 
If a JavaScript statement does not fit on one line, the best place to break it is after an operator:
 
If a JavaScript statement does not fit on one line, the best place to break it is after an operator:
  
اگر یک خط کد جاوااسکریپت درون یک خط کد جا نشود ، بهترین روش این است که آن را بعد از یک عملگر به دو خط تقسیم کنیم:
+
اگر یک خط کد جاوااسکریپت درون یک خط کد جا نشود، بهترین روش این است که آن را بعد از یک عملگر به دو خط تقسیم کنیم:
  
 
=== Example ===
 
=== Example ===
 
document.getElementById("demo").innerHTML =
 
document.getElementById("demo").innerHTML =
 
+
"Hello Dolly!";
"Hello Dolly!";  
 
  
 
You can also break up a code line '''within a text string''' with a single backslash:
 
You can also break up a code line '''within a text string''' with a single backslash:
  
شما همچنین می توانید '''درون یک رشته متنی''' به وسیله یک بک اسلش یک خط خالی ایجاد کنید:
+
شما همچنین می‌توانید '''درون یک رشته متنی''' به وسیله یک بک اسلش یک خط خالی ایجاد کنید:
  
 
=== Example ===
 
=== Example ===
سطر ۱۵۹: سطر ۱۵۸:
 
The <code>\</code> method is not the preferred method. It might not have universal support.
 
The <code>\</code> method is not the preferred method. It might not have universal support.
  
استفاده از بک اسلش یا \ دیگر روش مناسبی نیست . این روش دیگر پشتیبانی نمی شود .
+
استفاده از بک اسلش یا \ دیگر روش مناسبی نیست. این روش دیگر پشتیبانی نمی‌شود.
  
 
Some browsers do not allow spaces behind the <code>\</code> character.
 
Some browsers do not allow spaces behind the <code>\</code> character.
  
برخی از مرورگر ها اجازه استفاده از فضای خالی پشت کاراکتر \ را نمی دهند .  
+
برخی از مرورگرها اجازه استفاده از فضای خالی پشت کاراکتر \ را نمی‌دهند.
  
 
A safer way to break up a string, is to use string addition:
 
A safer way to break up a string, is to use string addition:
  
راه بهتری که برای ایجاد فاصله در رشته متنی وجود دارد ، جمع کردن رشته ها است :
+
راه بهتری که برای ایجاد فاصله در رشته متنی وجود دارد، جمع کردن رشته‌ها است:
  
 
=== Example ===
 
=== Example ===
document.getElementById("demo").innerHTML = "Hello " +  
+
document.getElementById("demo").innerHTML = "Hello " +
  
"Dolly!";  
+
"Dolly!";
  
 
You cannot break up a code line with a backslash:
 
You cannot break up a code line with a backslash:
  
شما نمی توانید به وسیله ی \ بین کد ها فاصله ایجاد کنید :
+
شما نمی‌توانید به وسیلهٔ \ بین کدها فاصله ایجاد کنید:
  
 
=== Example ===
 
=== Example ===
document.getElementById("demo").innerHTML = \  
+
document.getElementById("demo").innerHTML = \
  
 
"Hello Dolly!";
 
"Hello Dolly!";
سطر ۱۸۵: سطر ۱۸۴:
 
Normally, JavaScript strings are primitive values, created from literals:
 
Normally, JavaScript strings are primitive values, created from literals:
  
به صورت عادی، رشته های متنی در جاوااسکریپت از نوع primitive هستند که از عبارتهای ساده شاخته شده است :
+
به صورت عادی، رشته‌های متنی در جاوااسکریپت از نوع primitive هستند که از عبارتهای ساده شاخته شده‌است:
  
 
<code>var firstName = "John";</code>
 
<code>var firstName = "John";</code>
سطر ۱۹۱: سطر ۱۹۰:
 
But strings can also be defined as objects with the keyword <code>new</code>:
 
But strings can also be defined as objects with the keyword <code>new</code>:
  
اما رشته های متنی نیز می توانند به صورت یک شی به وسیله ی کلمه کلیدی new تعریف شوند :
+
اما رشته‌های متنی نیز می‌توانند به صورت یک شی به وسیلهٔ کلمه کلیدی new تعریف شوند:
  
 
<code>var firstName = new String("John");</code>
 
<code>var firstName = new String("John");</code>
سطر ۱۹۹: سطر ۱۹۸:
  
 
var y = new String("John");
 
var y = new String("John");
 
  
 
// typeof x will return string
 
// typeof x will return string
  
// typeof y will return object  
+
// typeof y will return object
  
 
Don't create strings as objects. It slows down execution speed.
 
Don't create strings as objects. It slows down execution speed.
سطر ۲۰۹: سطر ۲۰۷:
 
The <code>new</code> keyword complicates the code. This can produce some unexpected results:
 
The <code>new</code> keyword complicates the code. This can produce some unexpected results:
  
رشته های متنی را به صورت شی تعریف نکنید . این کار موجب کاهش سرعت اجرای کد شما می شود. کلمه کلیدی new نیز موجب پیچیده تر شدن کد شما می شود . این امر می تواند موجب بروز برخی از نتایج ناخواسته نیز شود:
+
رشته‌های متنی را به صورت شی تعریف نکنید. این کار موجب کاهش سرعت اجرای کد شما می‌شود. کلمه کلیدی new نیز موجب پیچیده‌تر شدن کد شما می‌شود. این امر می‌تواند موجب بروز برخی از نتایج ناخواسته نیز شود:
  
 
When using the <code>==</code> operator, equal strings are equal:
 
When using the <code>==</code> operator, equal strings are equal:
  
زمانی که از عملگر ==استفاده می کنید ، رشته های برابر ، با یک دیگر برابرند :
+
زمانی که از عملگر ==استفاده می‌کنید، رشته‌های برابر، با یک دیگر برابرند:
  
 
=== Example ===
 
=== Example ===
var x = "John";            
+
var x = "John";
  
 
var y = new String("John");
 
var y = new String("John");
  
 +
// (x == y) is true because x and y have equal values
  
// (x == y) is true because x and y have equal values
+
When using the <code>=== </code> operator, equal strings are not equal, because the <code> ===</code> operator expects equality in both type and value.
 
 
When using the <code>===</code> operator, equal strings are not equal, because the <code>===</code> operator expects equality in both type and value.
 
  
زمانی که از عملگر === استفاده می کنید ، رشته های برابر با یک دیگر برابر نیستند ، زیرا که عملگر === برابری عملوند های خود را در هم مقدار آنها و هم نوع آنها بررسی می کند .
+
زمانی که از عملگر === استفاده می‌کنید، رشته‌های برابر با یک دیگر برابر نیستند، زیرا که عملگر === برابری عملوندهای خود را در هم مقدار آنها و هم نوع آنها بررسی می‌کند.
  
 
=== Example ===
 
=== Example ===
var x = "John";            
+
var x = "John";
  
 
var y = new String("John");
 
var y = new String("John");
  
 
+
// (x === y) is false because x and y have different types (string and object)
// (x === y) is false because x and y have different types (string and object)  
 
  
 
Or even worse. Objects cannot be compared:
 
Or even worse. Objects cannot be compared:
  
و یا این کار می تواند نتایج بدتری نیز داشته باشد . شی ها در جاوااسکریپت نمی توانند با یک دیگر مقایسه شوند :
+
و یا این کار می‌تواند نتایج بدتری نیز داشته باشد. شی‌ها در جاوااسکریپت نمی‌توانند با یک دیگر مقایسه شوند:
  
 
=== Example ===
 
=== Example ===
var x = new String("John");            
+
var x = new String("John");
  
 
var y = new String("John");
 
var y = new String("John");
 
  
 
// (x == y) is false because x and y are different objects
 
// (x == y) is false because x and y are different objects
  
 
=== Example ===
 
=== Example ===
var x = new String("John");            
+
var x = new String("John");
  
 
var y = new String("John");
 
var y = new String("John");
 
  
 
// (x === y) is false because x and y are different objects
 
// (x === y) is false because x and y are different objects
  
Note the difference between <code>(x==y)</code> and <code>(x===y)</code>.
+
Note the difference between <code>(x== y)</code> and <code>(x ===y)</code>.
  
'''نکته :''' به تفاوت بین (x==y) و (x===y) توجه داشته باشید .  
+
'''نکته :''' به تفاوت بین (x== y) و (x ===y) توجه داشته باشید.
  
 
Comparing two JavaScript objects will '''always''' return <code>false</code>.
 
Comparing two JavaScript objects will '''always''' return <code>false</code>.
  
نتیجه مقایسه دو شی در جاوااسکریپت '''همیشه''' False خواهد بود .
+
نتیجه مقایسه دو شی در جاوااسکریپت '''همیشه''' False خواهد بود.

نسخهٔ ‏۹ آبان ۱۳۹۸، ساعت ۱۸:۴۷

JavaScript strings are used for storing and manipulating text.

رشته‌های متنی در جاوااسکریپت برای ذخیره و ویرایش متن‌ها استفاده می‌شوند.

JavaScript Strings

رشته‌ها در جاوااسکریپت

A JavaScript string is zero or more characters written inside quotes.

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

Example

var x = "John Doe";

You can use single or double quotes:

شما می‌توانید از تک کوتیشن ′ یا دو کوتیشن ″ استفاده کنید:

Example

var carName1 = "Volvo XC60"; // Double quotes

var carName2 = 'Volvo XC60'; // Single quotes

You can use quotes inside a string, as long as they don't match the quotes surrounding the string:

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

Example

var answer1 = "It's alright";

var answer2 = "He is called 'Johnny'";

var answer3 = 'He is called "Johnny"';

String Length

طول یک رشته متنی یا String

To find the length of a string, use the built-in length property:

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

Example

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

var sln = txt.length;

Escape Character

Escape کردن کاراکترها

Because strings must be written within quotes, JavaScript will misunderstand this string:

از آنجایی که رشته‌های متنی می‌بایست درون کوتیشن‌ها نوشته شوند، جاوااسکریپت رشته متنی زیر را درست درک نمی‌کند:

var x = "We are the so-called "Vikings" from the north.";

The string will be chopped to "We are the so-called ".

رشته متنی فوق به "We are the so-called " خلاصه خواهد شد.

The solution to avoid this problem, is to use the backslash escape character.

راه حل این مشکل استفاده از علامت بک اسلش یا \ قبل از کاراکتر است.

The backslash (\) escape character turns special characters into string characters:

کاراکتر بک اسلش(\) موجب می‌شود که کاراکترهای به خصوص همانند کوتیشن به کاراکترهای متنی یا رشته‌ای تبدیل شوند:

کد نتیجه توضیحات
\′ تک کوتیشن
\’’ دو کوتیشن
\\ \ بک اسلش

The sequence \" inserts a double quote in a string:

عبارت \″ موجب ایجاد دو کوتیشن یا ″ در یک رشته متنی می‌شود:

Example

var x = "We are the so-called \"Vikings\" from the north.";

The sequence \' inserts a single quote in a string:

عبارت \′ موجب ایجاد تک کوتیشن یا ′ در یک رشته متنی می‌شود:

Example

var x = 'It\'s alright.';

The sequence \\ inserts a backslash in a string:

عبارت \\ یک بک اسلش درون یک رشته متنی ایجاد می‌کند:

Example

var x = "The character \\ is called backslash.";

Six other escape sequences are valid in JavaScript:

شش عبارت معتبر دیگر برای تبدیل کاراکترها در جاوااسکریپت:

کد نتیجه
\b ایجاد بک اسلش در رشته متنی
\f ایجاد formfeed
\n ایجاد خط جدید
\r حذف یک کاراکتر
\t ایجاد یک تب یا فاصله افقی
\v ایجاد یک فاصله عمودی

The 6 escape characters above were originally designed to control typewriters, teletypes, and fax machines. They do not make any sense in HTML.

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

Breaking Long Code Lines

کوچکتر کردن کدهای طولانی

For best readability, programmers often like to avoid code lines longer than 80 characters.

برای خواناتر شدن کد، برنامه‌نویس‌ها اغلب دوست دارند که طول کدهایشان در هر خط بیشتر از ۸۰ کاراکتر نباشد.

If a JavaScript statement does not fit on one line, the best place to break it is after an operator:

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

Example

document.getElementById("demo").innerHTML = "Hello Dolly!";

You can also break up a code line within a text string with a single backslash:

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

Example

document.getElementById("demo").innerHTML = "Hello \

Dolly!";

The \ method is not the preferred method. It might not have universal support.

استفاده از بک اسلش یا \ دیگر روش مناسبی نیست. این روش دیگر پشتیبانی نمی‌شود.

Some browsers do not allow spaces behind the \ character.

برخی از مرورگرها اجازه استفاده از فضای خالی پشت کاراکتر \ را نمی‌دهند.

A safer way to break up a string, is to use string addition:

راه بهتری که برای ایجاد فاصله در رشته متنی وجود دارد، جمع کردن رشته‌ها است:

Example

document.getElementById("demo").innerHTML = "Hello " +

"Dolly!";

You cannot break up a code line with a backslash:

شما نمی‌توانید به وسیلهٔ \ بین کدها فاصله ایجاد کنید:

Example

document.getElementById("demo").innerHTML = \

"Hello Dolly!";

Normally, JavaScript strings are primitive values, created from literals:

به صورت عادی، رشته‌های متنی در جاوااسکریپت از نوع primitive هستند که از عبارتهای ساده شاخته شده‌است:

var firstName = "John";

But strings can also be defined as objects with the keyword new:

اما رشته‌های متنی نیز می‌توانند به صورت یک شی به وسیلهٔ کلمه کلیدی new تعریف شوند:

var firstName = new String("John");

Example

var x = "John";

var y = new String("John");

// typeof x will return string

// typeof y will return object

Don't create strings as objects. It slows down execution speed.

The new keyword complicates the code. This can produce some unexpected results:

رشته‌های متنی را به صورت شی تعریف نکنید. این کار موجب کاهش سرعت اجرای کد شما می‌شود. کلمه کلیدی new نیز موجب پیچیده‌تر شدن کد شما می‌شود. این امر می‌تواند موجب بروز برخی از نتایج ناخواسته نیز شود:

When using the == operator, equal strings are equal:

زمانی که از عملگر ==استفاده می‌کنید، رشته‌های برابر، با یک دیگر برابرند:

Example

var x = "John";

var y = new String("John");

// (x == y) is true because x and y have equal values

When using the === operator, equal strings are not equal, because the === operator expects equality in both type and value.

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

Example

var x = "John";

var y = new String("John");

// (x === y) is false because x and y have different types (string and object)

Or even worse. Objects cannot be compared:

و یا این کار می‌تواند نتایج بدتری نیز داشته باشد. شی‌ها در جاوااسکریپت نمی‌توانند با یک دیگر مقایسه شوند:

Example

var x = new String("John");

var y = new String("John");

// (x == y) is false because x and y are different objects

Example

var x = new String("John");

var y = new String("John");

// (x === y) is false because x and y are different objects

Note the difference between (x== y) and (x ===y).

نکته : به تفاوت بین (x== y) و (x ===y) توجه داشته باشید.

Comparing two JavaScript objects will always return false.

نتیجه مقایسه دو شی در جاوااسکریپت همیشه False خواهد بود.