首页
会员中心
到顶部
到尾部
JavaScript教程

JavaScript 类型转换

时间:2020/11/2 14:55:06  作者:  来源:  查看:0  评论:0
内容摘要:JavaScript 类型转换JS BreakJS 位运算Number() 转换数值,String() 转换字符串,Boolean() 转换布尔值。JavaScript 数据类型JavaScript 中有五种可包含值的数据类型:字符串(string)数字(number)布尔(bo...

JavaScript 类型转换

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())      

日期方法 toString() 同理。

实例

Date().toString()   

日期方法这一章,您能够找到更多可用于把日期转换为字符串的方法:

方法描述
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.14Number(" ")       // 返回 0Number("")        // 返回 0Number("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)     // 返回 0Number(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"

JavaScript 类型转换表

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

原始值转换为数字转换为字符串转换为逻辑试一试
false0"false"false试一试
true1"true"true试一试
00"0"false试一试
11"1"true试一试
"0"0"0"true试一试
"000"0"000"true试一试
"1"1"1"true试一试
NaNNaN"NaN"false试一试
InfinityInfinity"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试一试
null0"null"false试一试
undefinedNaN"undefined"false试一试

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

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



相关评论
广告联系QQ:45157718 点击这里给我发消息 电话:13516821613 杭州余杭东港路118号雷恩国际科技创新园  网站技术支持:黄菊华互联网工作室 浙ICP备06056032号