JavaScript 类型转换

Number() 转换数值,String() 转换字符串,Boolean() 转换布尔值。

Data Type JavaScript

JavaScript 中有五种可包含值的数据类型:

  • 字符串(string)
  • 数字(number)
  • 布尔(boolean)
  • 对象(object)
  • 函数(function)

有三种对象类型:

  • 对象(Object)
  • 日期(Date)
  • 数组(Array)

同时有两种不能包含值的数据类型:

  • null
  • undefined

typeof 运算符

您可以使用 typeof 运算符来确定 JavaScript 变量的数据类型。

laiki

typeof "Bill"                 // 返回 "string"
typeof 3.14                   // 返回 "number"
typeof NaN                    // 返回 "number"
typeof false                  // 返回 "boolean"
typeof [1,2,3,4]              // 返回 "object"
typeof {name:'Bill', age:62}  // 返回 "object"
typeof new Date()             // 返回 "object"
typeof function () {}         // 返回 "function"
typeof myCar                  // 返回 "undefined" *
typeof null                   // 返回 "object"

شما خودتان امتحان کنید

请注意:

  • NaN 的数据类型是数值
  • 数组的数据类型是对象
  • 日期的数据类型是对象
  • null 的数据类型是对象
  • 未定义变量的数据类型是 undefined
  • 尚未赋值的变量的数据类型也是 undefined

您无法使用 typeof 去判断 JavaScript 对象是否是数组(或日期)。

typeof 的数据类型

typeof 运算符不是变量。它属于运算符。运算符(比如 + - * /)没有数据类型。

但是,typeof 始终会返回字符串(包含运算数的类型)。

constructor 属性

constructor 属性返回所有 JavaScript 变量的构造器函数。

laiki

"Bill".constructor                 // 返回 "function String()  { [native code] }"
(3.14).constructor                 // 返回 "function Number()  { [native code] }"
false.constructor                  // 返回 "function Boolean() { [native code] }"
[1,2,3,4].constructor              // 返回 "function Array()   { [native code] }"
{name:'Bill', age:62}.constructor  // 返回" function Object()  { [native code] }"
new Date().constructor             // fanhui "function Date()    { [native code] }"
function () {}.constructor         // fanhui "function Function(){ [native code] }"

شما خودتان امتحان کنید

ni keyi tongguo jiance constructor yingshi lai queding mou ge duixiang shi fou wei shuzu (baohan danyan "Array"):

laiki

function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}

شما خودتان امتحان کنید

huozhe geng jian dan, ni keyi jiance duixiang shi fou shi shuzu hanshu:

laiki

function isArray(myArray) {
    return myArray.constructor === Array;
}

شما خودتان امتحان کنید

ni keyi tongguo jiance constructor yingshi lai queding mou ge duixiang shi fou wei riqi (baohan danyan "Date"):

laiki

function isDate(myDate) {
    return myDate.constructor.toString().indexOf("Date") > -1;
}

شما خودتان امتحان کنید

huozhe geng jian dan, ni keyi jiance duixiang shi fou shi riqi hanshu:

laiki

function isDate(myDate) {
    return myDate.constructor === Date;
}

شما خودتان امتحان کنید

JavaScript 类型转换

JavaScript bianliang keyi bei zhuanhuanwei xin bianliang yu qita shujuzhonglei:

  • tongguo shiyong JavaScript hanshu
  • tongguo JavaScript benrenzidongzhuanhuan

ba shuzhi zhuanhuanwei baiyuwan

روش‌های جهانی String() nenggang ba shuzi zhuanhuanwei baiyuwan.

ta keyi yongyu renyi lei xing de shuzi, wenziben, bianliang huo biaodanyu:

laiki

String(x)         // Cong shuzhi bianliang x huanhuanwei baiyuwan
String(123)       // Cong shuzhi wenziben 123 huanhuanwei baiyuwan
String(100 + 23)  // Cong biao达shi zhong de shuzhi huanhuanwei baiyuwan

شما خودتان امتحان کنید

数字方法 toString() همانطور که می‌دانید.

laiki

x.toString()
(123).toString()
(100 + 23).toString()

شما خودتان امتحان کنید

数字方法zhe yi zhang, ni hui xue dao geng duo keyi yongyu jiang shuzhi zhuanhuanwei baiyuwan de fangfa:

kalimat ni aya
toExponential() a baiyuwan, duanyi shuzi, bing shiyong zhiji jishu fa lai xie.
toFixed() a baiyuwan, duanyi shuzi, bing shiyong zhide weidu de xiaoshu lai xie.
toPrecision() a baiyuwan, ba shuzi xiewei zidingyi de changdu.

把布尔转换为字符串

روش‌های جهانی String() 能够将布尔转换为字符串。

String(false)        // 返回 "false"
String(true)         // 返回 "true"

布尔方法 toString() همانطور که می‌دانید.

false.toString()     // 返回 "false"
true.toString()      // 返回 "true"

把日期转换为字符串

روش‌های جهانی String() 可将日期转换为字符串。

String(Date())      

روش‌های تاریخ toString() همانطور که می‌دانید.

laiki

Date().toString()   

روش‌های تاریخ这一章,您能够找到更多可用于把日期转换为字符串的方法:

kalimat ni aya
getDate() 获得以数值计(1-31)的日
getDay() 或者以数值计(0-6)的周
getFullYear() 获得四位的年(yyyy)
getHours() 获得时(0-23)
getMilliseconds() 获得毫秒(0-999)
getMinutes() 获得分钟(0-59)
getMonth() 获得月(0-11)
getSeconds() 获得秒(0-59)
getTime() 获得时间(1970 年 1 月 1 日以来的毫秒)

把字符串转换为数值

روش‌های جهانی Number() 可把字符串转换为数字。

包含数字的字符串(比如 "3.14")转换为数字(比如 3.14)。

空的字符串转换为 0。

其他字符串将转换为 NaN(Not a number,不是数字)。

Number("3.14")    // 返回 3.14
Number(" ")       // 返回 0
Number("")        // 返回 0
Number("99 88")   // 返回 NaN

数字方法这一章中,您将找到更多可用于把字符串转换为数字的方法:

kalimat ni aya
parseFloat() ni aya kalmansu aya ni adadi.
parseInt() ni aya kalmansu aya ni adadi.

ni yana + kalimat

ni yana + kalimathadda aya yana ni aya yana aya aya ni adadi:

laiki

var y = "5";      // y ni kalmansu
var x = + y;      // x ni adadi

شما خودتان امتحان کنید

hadda kariya kariya aya yana kariya ni yana aya, amma raba aya yana NaN(Not a number):

laiki

var y = "Bill";   // y ni wani kalmansu
var x = + y;      // x عدد (NaN)

شما خودتان امتحان کنید

اعداد بولی را به اعداد تبدیل

روش‌های جهانی Number() همچنین می‌توان اعداد بولی را به اعداد تبدیل.

Number(false)     // بازمی‌گردد به 0
Number(true)      // بازمی‌گردد به 1

تاریخ را به عدد تبدیل

روش‌های جهانی Number() قابل استفاده برای تبدیل تاریخ به عدد.

d = new Date();
Number(d)          

روش‌های تاریخ getTime() همانطور که می‌دانید.

d = new Date();
d.getTime()        

تبدیل خودکار نوع داده

اگر JavaScript سعی کند با نوع داده

نتایج همیشه مانند انتظار شما نیست:

5 + null    // بازمی‌گردد به 5         زیرا null به 0 تبدیل می‌شود
"5" + null  // بازمی‌گردد به "5null"   زیرا null به "null" تبدیل می‌شود
"5" + 2     // بازمی‌گردد به 52        زیرا 2 به "2" تبدیل می‌شود
"5" - 2     // بازمی‌گردد به 3         زیرا "5" به 5 تبدیل می‌شود
"5" * "2"   // بازمی‌گردد به 10        زیرا "5" و "2" به 5 و 2 تبدیل می‌شوند

شما خودتان امتحان کنید

تبدیل به رشته خودکار

JavaScript به طور خودکار متغیر toString() وظیفه، وقتی شما سعی می‌کنید "خروج" یک شیء یا متغیر را داشته باشید:

document.getElementById("demo").innerHTML = myVar;
// اگر myVar = {name:"Fjohn"}  // toString شغلی "[object Object]"
// اگر myVar = [1,2,3,4]       // toString شغلی "1,2,3,4"
// اگر myVar = new Date()      // toString شغلی ""

رقم و بول نیز تبدیل می‌شوند، اما این تغییرات به وضوح دیده نمی‌شوند:

// اگر myVar = 123             // toString شغلی "123"
// اگر myVar = true            // toString شغلی "true"
// اگر myVar = false           // toString شغلی "false"

Tabi na tsafta na JavaScript

Kudade na tabi na wuri na JavaScript yana kafa ziyara fari, fari da logic:

Wuri mai tsaki Daidaito kudade Daidaito fari Daidaito logic Sai sai
false 0 "false" false Sai sai
true 1 "true" true Sai sai
0 0 "0" false Sai sai
1 1 "1" true Sai sai
"0" 0 "0" true Sai sai
"000" 0 "000" true Sai sai
"1" 1 "1" true Sai sai
NaN NaN "NaN" false Sai sai
Infinity Infinity "Infinity" true Sai sai
-Infinity -Infinity "-Infinity" true Sai sai
"" 0 "" false Sai sai
"20" 20 "20" true Sai sai
"twenty" NaN "twenty" true Sai sai
[ ] 0 "" true Sai sai
[20] 20 "20" true Sai sai
[10,20] NaN "10,20" true Sai sai
["twenty"] NaN "twenty" true Sai sai
["ten","twenty"] NaN "ten,twenty" true Sai sai
function(){} NaN "function(){}" true Sai sai
{ } NaN "[object Object]" true Sai sai
null 0 "null" false Sai sai
undefined NaN "undefined" false Sai sai

Wuri mai girmama ya nuna wuri mai fari.

Wuri mai rediWuri ya nuna (daidai) mutum da ba ganin shi ba.