欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

松软科技Web课堂:JavaScript 类型转换

程序员文章站 2022-05-18 19:36:52
Number() 转换数值,String() 转换字符串,Boolean() 转换布尔值。 JavaScript 数据类型 JavaScript 中有五种可包含值的数据类型: 字符串(string) 数字(number) 布尔(boolean) 对象(object) 函数(function) 有三种 ......

number() 转换数值,string() 转换字符串,boolean() 转换布尔值。

javascript 数据类型

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

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

有三种对象类型:

  • 对象(object)
  • 日期(date)
  • 数组(array)

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

  • null
  • undefined

typeof 运算符

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

实例

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 变量的构造器函数。

实例

"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             // 返回 "function date()    { [native code] }"
function () {}.constructor         // 返回 "function function(){ [native code] }"

 

您可以通过检查 constructor 属性来确定某个对象是否为数组(包含单词 "array"):

实例

function isarray(myarray) {
    return myarray.constructor.tostring().indexof("array") > -1;
}

 

或者更简单,您可以检查对象是否是数组函数:

实例

function isarray(myarray) {
    return myarray.constructor === array;
}

 

您可以通过检查 constructor 属性来确定某个对象是否为日期(包含单词 "date"):

实例

function isdate(mydate) {
    return mydate.constructor.tostring().indexof("date") > -1;
}

 

或者更简单,您可以检查对象是否是日期函数:

实例

function isdate(mydate) {
    return mydate.constructor === date;
}

 

javascript 类型转换

javascript 变量能够被转换为新变量以及另一种数据类型:

  • 通过使用 javascript 函数
  • 通过 javascript 本身自动转换

把数值转换为字符串

全局方法 string() 能够把数字转换为字符串。

它可用于任意类型的数字、文字、变量或表达式:

实例

string(x)         // 从数值变量 x 返回字符串
string(123)       // 从数值文本 123 返回字符串
string(100 + 23)  // 从表达式中的数值返回字符串

 

数字方法 tostring() 同理。

实例

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

 

方法 描述
toexponential() 返回字符串,对数字进行舍入,并使用指数计数法来写。
tofixed() 返回字符串,对数字进行舍入,并使用指定位数的小数来写。
toprecision() 返回字符串,把数字写为指定的长度。

把布尔转换为字符串

全局方法 string() 能够将布尔转换为字符串。

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

布尔方法 tostring() 同理。

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

 

把日期转换为字符串

全局方法 string() 可将日期转换为字符串。

string(date())      // 返回 "fri dec 13 2019 09:48:21 gmt+0800 (中国标准时间)"

日期方法 tostring() 同理。

实例

date().tostring()   // 返回 "fri dec 13 2019 09:48:21 gmt+0800 (中国标准时间)"

 

方法 描述
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

 

方法 描述
parsefloat() 解析字符串并返回浮点数。
parseint() 解析字符串并返回整数。

一元 + 运算符

一元的 + 运算符可用于把变量转换为数字:

实例

var y = "5";      // y 是字符串
var x = + y;      // x 是数字

 

如果无法转换变量,则仍会成为数字,但是值为 nan(not a number):

实例

var y = "bill";   // y 是字符串
var x = + y;      // x 是数字 (nan)

把布尔转换数值

全局方法 number() 也可把布尔转换为数字。

number(false)     // 返回 0
number(true)      // 返回 1

把日期转换为数字

全局方法 number() 可用于把日期转换为数字。

d = new date();
number(d)          // 返回 1576201701989

 

日期方法 gettime() 同理。

d = new date();
d.gettime()        // 返回 1576201701992,时间戳

 

自动类型转换

如果 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 转换为 "fri dec 13 2019 09:48:21 gmt+0800 (中国标准时间)"

 

数字和布尔也会被转换,但并不明显:

// 如果 myvar = 123             // tostring 转换为 "123"
// 如果 myvar = true            // tostring 转换为 "true"
// 如果 myvar = false           // tostring 转换为 "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