登录 |  注册
首页 >  编程语言 >  JavaScript入门教程笔记 >  JavaScript类型转换

JavaScript类型转换

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


JavaScript 数据类型

在 JavaScript 中有 5 种不一样的数据类型:

  • string

  • number

  • boolean

  • object

  • function

3 种对象类型:

  • Object

  • Date

  • Array

2 个不包含任何值的数据类型:

  • null

  • undefined


typeof 操作符

你可以使用 typeof 操作符来查看 JavaScript 变量的数据类型。

typeof "John" // 返回 string 
typeof 3.14   // 返回 number 
typeof NaN   // 返回 number  
typeof false  // 返回 boolean
typeof [ 1,   2,   3,   4]  // 返回 object 
typeof {name: 'John', age:34}  // 返回 object
typeof new Date()     // 返回 object 
typeof function () {}   // 返回 function 
typeof myCar    // 返回 undefined (if myCar is not declared)   
typeof null   // 返回 object

请注意:

  • NaN 的数据类型是 number

  • 数组(Array)的数据类型是 object

  • 日期(Date)的数据类型为 object

  • null 的数据类型是 object

  • 未定义变量的数据类型为 undefined

如果对象是 JavaScript Array 或 JavaScript Date ,我们就无法通过 typeof 来判断他们的类型,因为都是 返回 Object。


constructor 属性

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

"John".constructor                  // 返回函数 String()  { [native code] }

(   3.14).constructor                  // 返回函数 Number()  { [native code] } 

false.constructor                   // 返回函数 Boolean() { [native code] }

[   1,   2,   3,   4].constructor               // 返回函数 Array()   { [native code] }

{name:   'John', age:34}.constructor    // 返回函数 Object()  { [native code] }

 new Date().constructor              // 返回函数 Date()    { [native code] }

function() {}.constructor          // 返回函数 Function(){ [native code] }  

你可以使用 constructor 属性来查看对象是否为数组 (包含字符串 "Array"):

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

你可以使用 constructor 属性来查看是对象是否为日期 (包含字符串 "Date"):

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

JavaScript 类型转换

JavaScript 变量可以转换为新变量或其他数据类型:

  • 通过使用 JavaScript 函数

  • 通过 JavaScript 自身自动转换


将数字转换为字符串

全局方法 String() 可以将数字转换为字符串。

该方法可用于任何类型的数字,字母,变量,表达式:

String(x)      // 将变量 x 转换为字符串并返回
String(123)    // 将数字 123 转换为字符串并返回
String(100+23)  // 将数字表达式转换为字符串并返回

Number 方法 toString() 也是有同样的效果

x.toString() (123).toString() 
(100+ 23).toString()
方法描述
toExponential()把对象的值转换为指数计数法。
toFixed()把数字转换为字符串,结果的小数点后有指定位数的数字。
toPrecision()把数字格式化为指定的长度。

将布尔值转换为字符串

全局方法 String() 可以将布尔值转换为字符串。

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

Boolean 方法 toString() 也有相同的效果。

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

将日期转换为字符串

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

String(Date())    // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

Date 方法 toString() 也有相同的效果。

Date().toString()  // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

在 Date 方法 章节中,你可以查看更多关于日期转换为字符串的函数:

方法描述
getDate()从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay()从 Date 对象返回一周中的某一天 (0 ~ 6)。
getFullYear()从 Date 对象以四位数字返回年份。
getHours()返回 Date 对象的小时 (0 ~ 23)。
getMilliseconds()返回 Date 对象的毫秒(0 ~ 999)。
getMinutes()返回 Date 对象的分钟 (0 ~ 59)。
getMonth()从 Date 对象返回月份 (0 ~ 11)。
getSeconds()返回 Date 对象的秒数 (0 ~ 59)。
getTime()返回 1970 年 1 月 1 日至今的毫秒数。

将字符串转换为数字

全局方法 Number() 可以将字符串转换为数字。

字符串包含数字(如 "3.14") 转换为数字 (如 3.14).

空字符串转换为 0。

其他的字符串会转换为 NaN (不是个数字)。

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

方法描述
parseFloat()解析一个字符串,并返回一个浮点数。
parseInt()解析一个字符串,并返回一个整数。


一元运算符 +

Operator + 可用于将变量转换为数字:

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

如果变量不能转换,它仍然会是一个数字,但值为 NaN (不是一个数字):

var y = "John"; // y 是一个字符串
var x = + y;   // x 是一个数字 (NaN)


将布尔值转换为数字

全局方法 Number() 可将布尔值转换为数字。

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

将日期转换为数字

全局方法 Number() 可将日期转换为数字。

d = new Date(); 
Number(d)   // 返回 1404568027739

日期方法 getTime() 也有相同的效果。

d = new Date(); 
d.getTime();   // 返回 1404568027739

自动转换类型 Type Conversion

当 JavaScript 尝试操作一个 "错误" 的数据类型时,会自动转换为 "正确" 的数据类型。

以下输出结果不是你所期望的:

5 + null   // 返回 5  because null is converted to 0
"5" + null  // 返回"5null"  because null is converted to "null"   
"5" + 1   // 返回 "51"  because 1 is converted to "1"   
"5" - 1   // 返回 4   because "5" is converted to 5

自动转换为字符串

当你尝试输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString() 方法:

document.getElementById("demo").innerHTML = myVar;

// if myVar = {name:"Fjohn"}  // toString 转换为 "[object Object]"
// if myVar = [1,2,3,4]       // toString 转换为 "1,2,3,4"
// if myVar = new Date()      // toString 转换为 "Fri Jul 18 2014 09:08:55 GMT+0200"

数字和布尔值也经常相互转换:

// if myVar = 123             // toString 转换为 "123"
// if myVar = true            // toString 转换为 "true"
// if myVar = false           // toString 转换为 "false"  


null

在 JavaScript 中 null 表示 "什么都没有",是一个只有一个值的特殊类型,表示一个空对象引用。

当设置为“null”时,可以用来清空对象:

var person = null; // 值为 null(空), 但类型为对象

提示:你可以使用 typeof 检测 null 返回是object。


undefined

在 JavaScript 中 undefined 是一个没有设置值的变量。

如果一个变量没有设置值的话,就会返回 undefined:

var person; // 值为 undefined(空), 类型是undefined
上一篇: Break和Continue语句
下一篇: JavaScript正则表达式
推荐文章
  • 在HTML中,如果你想让一个输入框(input元素)不可编辑,你可以通过设置其readonly属性来实现。示例如下:input type="text" value="此处内容不可编辑" readonly在上述代码中,readonly属性使得用户无法修改输入框中的内容。另外,如果你希望输入框完全不可交
  • ASP.NET教程ASP.NET又称为ASP+,基于.NETFramework的Web开发平台,是微软公司推出的新一代脚本语言。ASP.NET是一个使用HTML、CSS、JavaScript和服务器脚本创建网页和网站的开发框架。ASP.NET支持三种不一样的开发模式:WebPages(Web页面)、
  • C# 判断判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。下面是大多数编程语言中典型的判断结构的通常形式:判断语句C#提供了以下类型的判断语句。点击链接查看每个语句的细节。语句描述if语句一个 if语句 由一个布尔表达式后跟
  • C#循环有的时候,可能需要多次执行同一块代码。通常情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的通常形式:循环类型C#提供了以下几种循环类型
  • C#数组(Array)数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,一般认为数组是一个同一类型变量的集合。声明数组变量并不是声明number0、number1、...、number99一个个单独的变量,而是声明一个就像numbers这样的变量,然后使用numbers[0]
  • ASP.NET是一个由微软公司开发的用于构建Web应用程序的框架,它是.NETFramework的一部分。它提供了一种模型-视图-控制器(MVC)架构、Web表单以及最新的ASP.NETCore中的RazorPages等多种开发模式,可以用来创建动态网页和Web服务。以下是一些基础的ASP.NET编
学习大纲