JS 类型转换

JS 有 6 种不同的数据类型:

  • 字符串 string。
  • 数字 number。
  • 布尔 boolean。
  • 对象 object。
  • 函数 function。
  • symbol。

3 种对象类型 :

  • 对象 Object。
  • 日期 Date。
  • 数组 Array。

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

  • 空 null。
  • 未定义 undefined。

JS - typeof 操作符

用 typeof 查看变量所属类型 :

typeof "张三"                 // 返回 string
typeof 100                   // 返回 number
typeof NaN                   // 返回 number
typeof false                 // 返回 boolean
typeof [1,2,3,4,5]           // 返回 object
typeof {name:'张三', age:25}  // 返回 object
typeof new Date()            // 返回 object
typeof function () {}        // 返回 function
typeof myPhone               // 返回 undefined (如果 myPhone 没有声明)
typeof null                  // 返回 object
  • NaN 的数据类型为 number
  • 数组(Array)的数据类型为 object
  • 日期(Date)的数据类型为 object
  • null 的数据类型为 object
  • 未定义变量的数据类型为 undefined
  • 对象为 JS Array 或 JS Date ,则无法通过 typeof 来判断他们的类型,因为都是 返回 object。

JS - constructor 属性

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

"abc".constructor                  // 返回函数 String()  { [native code] }
(3.14).constructor                 // 返回函数 Number()  { [native code] }
false.constructor                  // 返回函数 Boolean() { [native code] }
[1,2,3,4,5].constructor            // 返回函数 Array()   { [native code] }
{name:'张三', age:25}.constructor  // 返回函数 Object()  { [native code] }
new Date().constructor             // 返回函数 Date()    { [native code] }
function () {}.constructor         // 返回函数 Function(){ [native code] }

用 constructor 属性来查看对象是否为数组 :

function isArray(myArray) {
    return myArray.constructor === Array;
}
var array = [1,2,3];
console.log(isArray(array)); //true

JS - 将 number 转换为 string

全局方法 String() 和 Number 方法 toString() 能将数字转换为字符串。

var x=100;
String(x)         // 返回字符串 "100"
String(123)       // 返回字符串 "123"
String(100 + 23)  // 返回字符串 "123"

x.toString();     // 返回字符串 "100"

JS - 将 boolean 转换为 string

全局方法 String() 和 Boolean 方法 toString() 能将布尔值转换为字符串。

var x=true,y=false;
String(x);    // 返回字符串 "true"
String(y);    // 返回字符串 "false"
x.toString(); // 返回字符串 "true"
y.toString(); // 返回字符串 "false"

JS - 将 string 转换为 number

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

Number("2020.09");   // 返回数字 2020.09
Number("10 20");     // 返回数字 NaN
Number("123abc");    // 返回数字 NaN
Number(" ");         // 返回数字 0
Number("");          // 返回数字 0

parseInt("2020.09"); // 返回整数 2020

JS - 将 boolean 转换为 number

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

JS - 自动转换数据类型

var x = 1;
console.log(typeof x);  // number

x=String(x);
console.log(typeof x);  // string

x=true;
console.log(typeof x);  // boolean

在运算符中 + 是特别的存在 :

var x = 1;
x = x + "200";
x;        // string "1200"

var i = 1,j = 2, k, l;
k = i + j + "200";  // string "3200"
l = "200" + i + j;  // string "20012"

不同数据类型相加时,遵循从左到右计算,因此 i + j + "200" 是先计算 x + y ,结果为:3200。

其他运算符 :

var i = 1, z, k;
z = "200" - i;  // number 199
k = i - "200";  // number -199

字符串 "200" 自动转换为 数字 200

JS - 将日期转换为 string

Date() 是日期对象。

var date = new Date();
var i = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();
var j = date.getHours() + ":" + date.getMinutes();
i ;  // 2020-9-6
j ;  // 15:25

方法 描述
getFullYear() 获取完整的年份
getMonth() 获取当前月份(0-11,0代表1月)
getDate() 获取当前日(1-31)
getDay() 获取当前星期X(0-6,0代表星期天)
getTime() 获取当前时间(从1970.1.1开始的毫秒数)
getHours() 获取当前小时数(0-23)
getMinutes() 获取当前分钟数(0-59)
getSeconds() 获取当前秒数(0-59)
toLocaleDateString() 获取当前日期