اغلب اوقات، عملگرها و توابع به طور خودکار مقادیر داده شده به آنها را به نوع مناسب تبدیل می کنند. به عنوان مثال، هشدار به طور خودکار هر مقدار را به رشته ای تبدیل می کند تا آن را نشان دهد. عملیات ریاضی مقادیر را به اعداد تبدیل می کند.

همچنین مواردی وجود دارد که ما نیاز به تبدیل صریح یک مقدار به نوع مورد انتظار داریم.
تبدیل رشته
تبدیل رشته زمانی اتفاق میافتد که به شکل رشتهای یک مقدار نیاز داشته باشیم.
به عنوان مثال، alert(value) این کار را برای نشان دادن مقدار انجام می دهد.
همچنین میتوانیم تابع String(value) را برای تبدیل یک مقدار به رشته فراخوانی کنیم:
let
value=
true;
alert(
typeof
value)
;
// booleanboolean
value=
String
(
value)
;
// now value is a string "true"
alert
(
typeof
value)
;
// string
تبدیل رشته بیشتر واضح است. یک false تبدیل به "false" ، و یک null تبدیل به "null" و غیره می شود.
تبدیل عددی
تبدیل عددی در توابع و عبارات ریاضی به طور خودکار اتفاق می افتد.
به عنوان مثال، وقتی تقسیم / به غیر اعداد اعمال می شود:
alert(
"6"
/
"2"
)
; // 3, strings are converted to numbers
ما می توانیم از تابع Number(value) برای تبدیل صریح یک مقدار به عدد استفاده کنیم:
let
str=
"123"
;
alert
(
typeof
str)
;
// string
let
num=
Number
(
str)
;
// becomes a number 123
alert
(
typeof
num)
;
// number
تبدیل صریح معمولاً زمانی مورد نیاز است که مقداری را از یک منبع مبتنی بر رشته مانند یک فرم متنی می خوانیم اما انتظار داریم یک عدد وارد شود.
اگر رشته یک عدد معتبر نباشد، نتیجه چنین تبدیلی NaN است. به عنوان مثال:
let
age=
Number
(
"an arbitrary string instead of a number"
)
;
alert
(
age)
;
// NaN, conversion failed
قوانین تبدیل عددی:
مقدار | خروجی |
undefined | NaN |
null | 0 |
true and false | 1 OR 0 |
string | فضاهای سفید (شامل فضاها، تب \t، خطوط جدید \n و غیره) از ابتدا و انتها حذف می شوند. اگر رشته باقی مانده خالی باشد، نتیجه 0 است. در غیر این صورت، عدد از رشته "خوانده می شود". و در صورت عدم امکان تبدیل یک خطا NaN می دهد. |
مثال:
alert
(
Number
(
" 123 "
)
)
;
// 123
alert
(
Number
(
"123z"
)
)
;
// NaN (error reading a number at "z")
alert
(
Number
(
true
)
)
;
// 1
alert
(
Number
(
false
)
)
;
// 0
لطفاً توجه داشته باشید که null و undefined در اینجا رفتار متفاوتی دارند: null صفر می شود در حالی که undefined تبدیل به NaN می شود.
تبدیل بولی
تبدیل بولی ساده ترین روش است.
این در عملیات منطقی اتفاق میافتد (بعداً با آزمایشهای شرط و موارد مشابه دیگر روبرو خواهیم شد) اما میتواند به طور صریح با فراخوانی Boolean (value) نیز انجام شود.
قانون تبدیل:
- مقادیری که به طور مستقیم "تهی" هستند، مانند 0، یک رشته خالی، null، undefined و NaN، به false تبدیل می شوند.
- مقادیر دیگر true می شوند.
به عنوان مثال:
alert
(
Boolean
(
1
)
)
;
// true
alert
(
Boolean
(
0
)
)
;
// false
alert
(
Boolean
(
"hello"
)
)
;
// true
alert
(
Boolean
(
""
)
)
;
// false
لطفا توجه داشته باشید: رشته با صفر "0" درست است
برخی از زبان ها (مثلا PHP) "0" را نادرست می دانند. اما در جاوا اسکریپت، یک رشته غیر خالی همیشه درست است.
alert
(
Boolean
(
"0"
)
)
;
// true
alert
(
Boolean
(
" "
)
)
;
// spaces, also true (any non-empty string is true)