JavaScript类型转换 JavaScript break JavaScript位运算 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" * typeof null // Returns "object" 让我试试 请注意: NaN 的数据类型是 number 数组的数据类型是 object 日期的数据类型是 object null 的数据类型是 object 未定义变量的数据类型是 undefined * 未赋值的变量的数据类型也未定义 * 你不能使用typeof来确定一个JavaScript数组和日期的类型. typeof的数据类型 typeof 操作符不是一个变量. 它是一个操作符. 操作符 ( + - * / ) 没有任何数据类型. 但是,typeof 运算符总是返回包含操作数类型的字符串. 构造函数属性 构造函数属性返回所有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] }" 让我试试 您可以检查构造函数以查明对象是否为数组(包含“Array”): 构造函数属性返回所有JavaScript变量的构造函数. function isArray(myArray) { return myArray.constructor.toString().indexOf("Array") > -1; } 让我试试 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 让我试试 Number方法toString()也有相同的作用 x.toString() (123).toString() (100 + 23).toString() 让我试试 在Number一章中, 你会发现更多的方法可以用来将数字转换为字符串: 方法 描述 toExponential() 返回一个字符串,用一个数字舍入并用指数符号书写. toFixed() 返回一个字符串,用一个数字舍入并用小数书写. toPrecision() 返回具有指定长度的数字的字符串 将布尔值的字符串 全局方法String()可以将布尔转换成字符串. String(false) // returns "false" String(true) // returns "true" Boolean方法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)" Date方法toString()也有相同的作用 Date().toString() // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)" 在日期一章里, 你会发现更多的方法,可以用来转换日期字符串: 方法 描述 getDate() 获得月里的一天(1-31) getDay() 获得周里的一天 (0-6) getFullYear() 获得4为数字的年 (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") // returns 3.14 Number(" ") // returns 0 Number("") // returns 0 Number("99 88") // returns NaN 在Number一章里, 你会发现更多的方法,可以用来转换字符串到数字: 方法 描述 parseFloat() 将一个字符串转换为一个浮点数 parseInt() 将一个字符串转换为一个整数 一元 + 操作符 一元 + 操作符将一个变量转换为数字: var y = "5"; // y is a string var x = + y; // x is a number 让我试试 如果变量不能被转换,它仍然会成为一个数字, 但是他的值是 NaN (Not a number): var y = "John"; // y is a string var x = + y; // x is a number (NaN) 让我试试 将布尔转换为数字 全局方法Number()能将布尔转换为数字. Number(false) // returns 0 Number(true) // returns 1 将日期转换为数字 全局方法 Number() 可用于将日期转换为数字. 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数据类型的转换数字、字符串和布尔: 原始值 转换为数字 转换为字符串 转换为布尔 试试 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 让我试试 引号中的值指示字符串值. JavaScript break JavaScript位运算