Pengubah Tipe JavaScript

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

Tipe Data JavaScript

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

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

有三种对象类型:

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

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

  • null
  • undefined

typeof 运算符

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

contoh

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"

Coba sendiri

请注意:

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

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

typeof 的数据类型

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

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

constructor 属性

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

contoh

"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             // Mengembalikan "function Date()    { [native code] }"
function () {}.constructor         // Mengembalikan "function Function(){ [native code] }"

Coba sendiri

Anda boleh memeriksa constructor Properti untuk menentukan sama ada objek adalah array (termasuk kata "Array"):

contoh

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

Coba sendiri

Atau lebih mudah, anda boleh memeriksa sama ada objek adalah fungsi array:

contoh

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

Coba sendiri

Anda boleh memeriksa constructor Properti untuk menentukan sama ada objek adalah tarikh (termasuk kata "Date"):

contoh

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

Coba sendiri

Atau lebih mudah, anda boleh memeriksa sama ada objek adalah fungsi tarikh:

contoh

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

Coba sendiri

Pengubah Tipe JavaScript

Variabel JavaScript boleh diubah kepada variabel baru serta jenis data lain:

  • Dengan menggunakan fungsi JavaScript
  • Melalui JavaScript sendiriAutomatikPenuh

Mengubah nilai kepada string

Metode global String() Mampu mengubah nombor kepada string.

Ia boleh digunakan untuk jenis nombor, teks, variabel atau ekspresi sebarang:

contoh

String(x)         // Mengembalikan string daripada variabel nombor x
String(123)       // Mengembalikan string daripada teks nombor 123
String(100 + 23)  // Mengembalikan string daripada nombor dalam ekspresi

Coba sendiri

metode nombor toString() Dengan demikian.

contoh

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

Coba sendiri

dimetode nomborDi bab ini, anda akan belajar lebih banyak tentang cara-cara yang boleh digunakan untuk mengubah nombor kepada string:

metode deskripsi
toExponential() Mengembalikan string, menggerakkan nombor dan menulis dengan sistem bilangan eksponen.
toFixed() Mengembalikan string, menggerakkan nombor dan menulis dengan titik desimal yang ditetapkan.
toPrecision() Mengembalikan string, menulis nombor dalam panjang yang ditetapkan.

mengubah boolean kepada string

Metode global String() boleh mengubah boolean kepada string.

String(false)        // kembali "false"
String(true)         // kembali "true"

metode boolean toString() Dengan demikian.

false.toString()     // kembali "false"
true.toString()      // kembali "true"

mengubah tarikh kepada string

Metode global String() boleh diubah tarikh kepada string.

String(Date())      

Metode tanggal toString() Dengan demikian.

contoh

Date().toString()   

diMetode tanggalDalam bab ini, anda akan mendapati lebih banyak metode yang boleh digunakan untuk mengubah tarikh kepada string:

metode deskripsi
getDate() mendapatkan hari dalam bentuk nombor (1-31)
getDay() atau dalam bentuk nombor (0-6) minggu
getFullYear() mendapatkan tahun empat digit (yyyy)
getHours() mendapatkan jam (0-23)
getMilliseconds() mendapatkan mili detik (0-999)
getMinutes() mendapatkan minit (0-59)
getMonth() mendapatkan bulan (0-11)
getSeconds() mendapatkan saat (0-59)
getTime() mendapatkan masa (mili detik sejak 1 Januari 1970)

mengubah string kepada bilangan

Metode global Number() boleh mengubah string kepada nombor

string yang mengandungi nombor (contohnya "3.14") diubah kepada nombor (contohnya 3.14).

string kosong diubah kepada 0。

string lain akan diubah kepada NaN(Not a number,bukan nombor)。

Number("3.14")    // kembali 3.14
Number(" ")       // kembali 0
Number("")        // kembali 0
Number("99 88")   // kembali NaN

dimetode nomborDalam bab ini, anda akan mendapati lebih banyak metode yang boleh digunakan untuk mengubah string kepada nombor:

metode deskripsi
parseFloat() menguraikan string dan mengembalikan bilangan genap.
parseInt() menguraikan string dan mengembalikan integer.

operator unary +

unary + operatorBoleh digunakan untuk mengubah variabel kepada nombor:

contoh

var y = "5";      // y ialah string
var x = + y;      // x ialah nombor

Coba sendiri

Jika pengalihan variabel gagal, ia masih akan menjadi nombor, tetapi nilai NaN(Not a number):

contoh

var y = "Bill";   // y ialah string
var x = + y;      // x adalah angka (NaN)

Coba sendiri

Mengubah boolean menjadi angka

Metode global Number() Juga dapat mengubah boolean menjadi angka.

Number(false)     // kembali 0
Number(true)      // kembali 1

Mengubah tanggal menjadi angka

Metode global Number() Dapat digunakan untuk mengubah tanggal menjadi angka.

d = new Date();
Number(d)          

Metode tanggal getTime() Dengan demikian.

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

Pengubahan jenis data otomatis

Jika JavaScript mencoba mengoperasikan jenis data "keliru", dia akan mencoba mengubah nilai tersebut menjadi jenis data "benar".

Hasilnya tidak selalu seperti yang Anda harapkan:

5 + null    // kembali 5         karena null diubah menjadi 0
"5" + null  // kembali "5null"   karena null diubah menjadi "null"
"5" + 2     // kembali 52        karena 2 diubah menjadi "2"
"5" - 2     // kembali 3         karena "5" diubah menjadi 5
"5" * "2"   // kembali 10        karena "5" dan "2" diubah menjadi 5 dan 2

Coba sendiri

pengubahan string otomatis

JavaScript secara otomatis memanggil toString() Fungsi, ketika Anda mencoba "mengeluarkan" objek atau variabel:

document.getElementById("demo").innerHTML = myVar;
// jika myVar = {name:"Fjohn"}  // toString mengubah "[object Object]"
// jika myVar = [1,2,3,4]       // toString mengubah "1,2,3,4"
// jika myVar = new Date()      // toString mengubah ""

Angka dan boolean juga akan diubah, tetapi tidak terlihat:

// jika myVar = 123             // toString mengubah "123"
// jika myVar = true            // toString mengubah "true"
// jika myVar = false           // toString mengubah "false"

JavaScript 类型转换表

下表中列出了将不同的 JavaScript 值转换为数字、字符串和布尔值的结果:

原始值 转换为数字 转换为字符串 转换为逻辑 试一试
false 0 "false" false 试一试
true 1 "true" true 试一试
0 0 "0" false 试一试
1 1 "1" true 试一试
"0" 0 "0" true 试一试
"000" 0 "000" true 试一试
"1" 1 "1" true 试一试
NaN NaN "NaN" false 试一试
Infinity Infinity "Infinity" true 试一试
-Infinity -Infinity "-Infinity" true 试一试
"" 0 "" false 试一试
"20" 20 "20" true 试一试
"twenty" NaN "twenty" true 试一试
[ ] 0 "" true 试一试
[20] 20 "20" true 试一试
[10,20] NaN "10,20" true 试一试
["twenty"] NaN "twenty" true 试一试
["ten","twenty"] NaN "ten,twenty" true 试一试
function(){} NaN "function(){}" true 试一试
{ } NaN "[object Object]" true 试一试
null 0 "null" false 试一试
undefined NaN "undefined" false 试一试

引号中的值指示字符串值。

红色的值指示了(某些)程序员可能不希望的值。