<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
//内置类型
//基本数据类型 null undefined boolean string symbol
console.log(typeof(null))
// null 虽然属于基本类型 比较特殊 它的类型为object 这是一个残留很久的bug
console.log(typeof(NaN))
//number 类型 NaN不等一自身
//判断一个变量的正确类型 这样我们就可以获得类似 [object Type] 的字符串。
console.log(Object.prototype.toString.call(null))
console.log(Object.prototype.toString.call(NaN))
//类型转换
//转 boolean
//条件判断除了 null 0 -0 false undefined '' NaN 其他的值都将转为 true 包括所有对象
//对象转基本类型
//先调用 valueOf() 在 调用 toString() 这两个方法是可以重写的
//eg
let a = {
valueOf() {
return 0;
},
toString() {
return '1';
},
[Symbol.toPrimitive]() {
return 2
}
}
console.log( 1 + a);
console.log('1' + a )
//四则运算符
////只有当加法运算时,其中一方是字符串类型,就会把另一个也转为字符串类型。
////其他运算只要其中一方是数字,那么另一方就转为数字。
////并且加法运算会触发三种类型转换:将值转换为原始值,转换为数字,转换为字符串。
1 + '1' // '11'
2 * '2' // 4
[1, 2] + [2, 1] // '1,22,1'
// [1, 2].toString() -> '1,2'
// [2, 1].toString() -> '2,1'
// '1,2' + '2,1' = '1,22,1'
</script>
</html>
网友评论