数据类型

50 阅读1分钟

基本数据类型 typeof 检测的结果

<script>
    var a;
    console.log(typeof 123); // number
    console.log(typeof "hello"); // string
    console.log(typeof true); // boolean
    console.log(typeof false); // bolean
    console.log(typeof a); // undefined
    console.log(typeof undefined); // undefined
    console.log(typeof null); // object
</script>

数据类型转换

其他值转数字

其他值转字符串

其他值转布尔值

其他值转数字

使用 Number(), 可以把任意数据类型, 转成数字

纯数字字符串, 会变成数字, 不是纯数字的字符串, 会变成 NaN not a number

<script>
    console.log(Number("123")); // 123
    console.log(Number("123.4")); // 123.4
    console.log(Number("123年")); // NaN
    console.log(Number("2e3")); // 2000
    console.log(Number("")); // 0
</script>

布尔值, true ==> 1, false ==> 0

<script>
    console.log(Number(true)); // 1
    console.log(Number(false)); // 0
</script>

undefined ==> NaN, null ==> 0

<script>
    console.log(Number(undefined)); // NaN
    console.log(Number(null)); // 0
</script>

parseInt() 可以把字符串, 转成整数, 不会四舍五入

会自动截掉第一个非数字字符之后的所有字符

不是数字开头, 转成 NaN

<script>
    console.log(parseInt("3.14")); // 3
    console.log(parseInt("3.14是圆周率")); // 3
    console.log(parseInt("圆周率是3.14")); // NaN
    console.log(parseInt("3.99")); // 3
    console.log(parseInt(3.99)); // 3
    console.log(parseInt(true)); // NaN
    console.log(parseInt(false)); // NaN
</script>

parseFloat() 可以把字符串, 转成浮点数/小数

会自动截掉第一个非数字字符之后的所有字符

不是数字开头, 转成 NaN

<script>
    console.log(parseFloat("3.14")); // 3.14
    console.log(parseFloat("123.456.789")); // 123.456
    console.log(parseFloat("3.14是圆周率")); // 3.14
    console.log(parseFloat("圆周率是3.14")); // NaN
    console.log(parseFloat("3.99")); // 3.99
    console.log(parseFloat(true)); // NaN
    console.log(parseFloat(false)); // NaN
</script>

其他值转字符串

String(), 可以把任意数据类型, 转成字符串

会把值, 转成"长得相同"的字符串

非十进制或者科学计数法会转成十进制

<script>
    console.log(String(123)); // "123"
    console.log(String(123.4)); // "123.4"
    console.log(String(2e3)); // "2000"
    console.log(String(NaN)); // "NaN"
    console.log(String(Infinity)); // "Infinity"
    console.log(String(0xf)); // "15"console.log(String(true)); // "true"
    console.log(String(false)); // "false"console.log(String(undefined)); // "undefined"
    console.log(String(null)); // "null"
</script>

toString(), 所有的值都有这个方法, 作用是把当前值转成字符串

效果和规则, 与 String()相同

<script>
    console.log(true.toString()); // "true"
    console.log(String(true)); // "true"
​
    console.log((6).toString()); // "6"
    console.log(String(6)); // "6"
</script>

其他值转布尔值

Boolean() 可以把任意数据类型, 转成布尔值

数字转布尔值, 0 和 NaN 会变成 false, 其他都是 true

<script>
    console.log(Boolean(123)); // true
    console.log(Boolean(0)); // false
    console.log(Boolean(NaN)); // false
    console.log(Boolean(Infinity)); // true
    console.log(Boolean(-Infinity)); // true
</script>

字符串转布尔值, 空字符串会变成 false, 其他的都变成 true

<script>
    console.log(Boolean("")); // false
    console.log(Boolean("abc")); // true
    console.log(Boolean("0")); // true
    console.log(Boolean("true")); // true
    console.log(Boolean("false")); // true
</script>

undefined 和 null 转布尔值, 都会转成 false

<script>
    console.log(Boolean(undefined)); // false
    console.log(Boolean(null)); // false
</script>

常用数据类型转换表

image-20211121223757407