Number()转换为数字, String()转换为字符串, Boolean()转换为布尔。
JavaScript的数据类型
在JavaScript中有5种不同的数据类型,可以包含值:
- string
- number
- boolean
- object
- function
有3种类型的对象:
- Object
- Date
- Array
2数据类型不能包含值:
- null
- undefined
该typeof操作
您可以使用typeof操作者找到一个JavaScript变量的数据类型。
例
typeof "John"
// Returns string
typeof 3.14
// Returns number
typeof NaN
// Returns number
typeof false
// Returns boolean
typeof [1,2,3,4] // Returns object
typeof {name:'John', age:34}
// Returns object
typeof new Date()
// Returns object
typeof function () {} // Returns function
typeof myCar
// Returns undefined (if myCar is not declared)
typeof null
// Returns object
试一试» 请注意:
- 的数据类型NaN的数
- 一个数据类型array的对象
- 一个数据类型date为对象
- 的数据类型null的对象
- 一个的数据类型undefined变量未定义
不能使用typeof来确定一个JavaScript对象是一个数组(或日期)。
的数据类型typeof
该typeof算不算一个变量。 它是一个运算符。 算( + - * / )没有任何数据类型。
但是,在typeof操作者总是返回包含操作数的类型的字符串 。
该constructor属性
该constructor属性返回所有的JavaScript变量的构造函数。
例
"John".constructor
// Returns function String() { [native code] }
(3.14).constructor
// Returns function Number() { [native code] }
false.constructor
// Returns function Boolean() { [native code] }
[1,2,3,4].constructor
// Returns function Array() { [native code] }
{name:'John', age:34}.constructor
// Returns function Object() { [native code] }
new Date().constructor
// Returns function Date() { [native code] }
function () {}.constructor
// Returns function Function(){ [native code] }
试一试» 您可以检查constructor属性,以找出是否一个对象是一个数组(包含单词"Array" ):
您可以检查constructor属性,以找出是否一个对象是一个日期(包含单词"Date" ):
JavaScript的类型转换
JavaScript变数可以转换为一个新的变量和其它数据类型:
- 通过使用JavaScript函数
- 自动由JavaScript本身
将数字转换为字符串
全球方法String()可以数字转换为字符串。
它可以在任何类型的数字,文字,变量或表达式中使用:
例
String(x) // returns a string from a number variable x
String(123) // returns a string from a number literal 123
String(100 + 23) // returns a string from a number from an expression
试一试» 数方法toString()不一样的。
在章节数的方法 ,你会发现,可用于数字转换为字符串更多的方法:
方法 | 描述 |
---|---|
toExponential() | 返回一个字符串,圆润使用指数符号写了许多。 |
toFixed() | 返回一个字符串,圆润和小数指定数量的写了一些。 |
toPrecision() | 返回一个字符串,具有指定长度写了一些 |
布尔值转换为字符串
全球方法String()可以布尔值转换为字符串。
String(false) // returns "false"
String(true) // returns "true"
布尔方法toString()不一样的。
false.toString() // returns "false"
true.toString() // returns "true"
将日期转换为字符串
全球方法String()可以日期转换为字符串。
String(Date()) // returns Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)
日期方法toString()不一样的。
例
Date().toString() // returns Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)
在第三章日期的方法 ,你会发现可以用来日期转换为字符串的详细方法:
方法 | 描述 |
---|---|
getDate() | 得到一天为数字(1-31) |
getDay() | 得到的工作日的数字(0-6) |
getFullYear() | 获取四位数年份(年) |
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 (非数字)。
Number("3.14") // returns 3.14
Number(" ") // returns 0
Number("") // returns 0
Number("99 88") // returns NaN
在章节数的方法 ,你会发现可用于字符串转换为数字更多的方法:
方法 | 描述 |
---|---|
parseFloat() | 分析字符串并返回一个浮点数 |
parseInt() | 分析字符串并返回一个整数 |
一元+操作
一元+操作者可以使用一个变量转换为数字:
如果变量不能转换,它仍然会成为一个数字,而是与该值NaN(非数字):
转换为布尔号码
全局方法Number()也可以布尔值转换为数字。
Number(false) // returns 0
Number(true) // returns 1
转换日期为数字
全球方法
d = new Date();
Number(d) // returns 1404568027739
日期方法getTime()不一样的。
d = new Date();
d.getTime() // returns 1404568027739
自动类型转换
当JavaScript尝试在一个“错误”的数据类型进行操作,它会尝试将值转换为一个“正确”的类型。
结果并不总是你所期望的:
5 + null // returns 5
because null is converted to 0
"5" + null // returns "5null"
because null is converted to "null"
"5" + 2 // returns
52
because 2 is converted to "2"
"5" - 2 // returns 3
because "5" is converted to 5
"5" * "2" // returns
10 because "5" and "2" are
converted to 5 and 2
试一试» 自动字符串转换
JavaScript的自动调用变量toString()当您尝试“产出”的对象或变量函数:
document.getElementById("demo").innerHTML = myVar;
// if myVar = {name:"Fjohn"} // toString converts to "[object Object]"
// if myVar = [1,2,3,4] // toString converts to "1,2,3,4"
// if myVar = new Date() // toString converts to "Fri Jul 18 2014 09:08:55 GMT+0200"
数字和布尔也可以被转化,但这并不是非常明显:
// if myVar = 123 // toString converts to "123"
// if myVar = true // toString converts to "true"
// if myVar = false // toString converts to "false"
JavaScript的类型转换表
该表显示转换不同的JavaScript值数字,字符串和布尔的结果:
原版的 值 | 转换 为数字 | 转换 为String | 转换 布尔 | 尝试一下 |
---|---|---|---|---|
false | 0 | "false" | false | 尝试一下 ” |
true | 1 | "true" | true | 尝试一下 ” |
0 | 0 | "0" | false | 尝试一下 ” |
1 | 1 | "1" | true | 尝试一下 ” |
"0" | 0 | "0" | 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 | 尝试一下 ” |
引号中的值表示字符串值。
红色数值表示的值(一般般)程序员可能没有想到。