2018-09-05 js基础

2018-09-05  本文已影响2人  Simon_s

<!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>

上一篇下一篇

猜你喜欢

热点阅读