美文网首页
JS 隐式转换

JS 隐式转换

作者: FConfidence | 来源:发表于2017-06-19 17:45 被阅读116次

隐式转换

  1. 数据类型

    • 基本数据类型: undefined string boolean null number symbol(es6新加)
    • 复杂数据类型:object
    • typeof返回的7中数据类型: undefined string boolean null number object function
  2. 数字与其他类型加法

    • 字符串 123+ "456" == "123456" 数字转字符串 toString()
    • 布尔类型 123+false == false+123 = 123, 123+true==true+123==124 布尔类型转数字0
    • null类型 123+null==null+123==123 null转数字0
    • undefined类型 123+undefined==Nan undefined转数字NaN
  3. 字符串与其他类型加法

    • 布尔类型 "hello" + false == "hellofalse" , "hello"+true=="hellotrue" 布尔类型转字符串
    • 数字类型 "hello"+123=="hello123" 数字类型转字符串
    • null类型 "hello"+null=="hellonull" null类型转字符串
    • undefined "hello"+undefined=="helloundefined" undefined转字符串
  4. null和undefined

    • null+undefined == NaN 两者都转数字, null转数字为0, undefined转数字为NaN 任何数字与NaN相加为NaN, 判断是否为NaN不能用==, NaN于自身都不等, 使用isNaN()函数
  5. 其他类型的运算

    • 减法,乘法,除,取余,大于小于等操作都转成Number类型
        1-false == true
        20-"1" ==19
        20 < "40" == true
        "1">false == true
        "1abcd">false == false//(因为"1abcd转数字为NaN")
        "1abcd"<false
    
    • String类型的带有字符的比如: '1a' ,'a1' 转化为 NaN 与undefined 一样
    • parseInt, parseFloat和Number转化
      • parseInt("123abcd") = 123, 但是Number("123abcd") == NaN(这里应该使用isNaN判断), Number要严格一些,基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。
      • parseFloat("1.23a4.56b.78") ==1.23)
  6. 转换为boolean类型

    • false: null, undefined, 0, '', ""(空串),false , NaN
    console.log(!!null)
    console.log(!!undefined)
    console.log(!!0)
    console.log(!!"")
    console.log(!!'')
    console.log(!!NaN)
    
    • undefined == null 返回true 比较特殊 (null与自身以及undefined等 与其他都不等)
    • ** 0 == undefined**, undefined==0 返回false
    • ** null == 0**, 0 == null 返回false
    • ** null == "0", ** "0" == null 返回false
    • ** null == false** 返回false
    • ** NaN == undefined, NaN == null ** 返回false
    • ** "" == false** 返回true ( 两者都转数字0)
    • ** "0" == false ** 返回true, (两者都转数字0)
    • ** 0 == false** 返回true (两者都转数字0)
  7. Object的基本运算

    • obj与其他类型运算的时候, 会调用valueOf方法
    • 在调用String(obj)的时候, 会调用toString()方法
    • 对象的比较简单来说就是转化成字符串之后再进行比较
    0 == [];        // true, 0 == [].valueOf(); -> 0 == 0;
    '0' == [];      // false, '0' == [].toString(); -> '0' == '';
    2 == ['2'];     // true, 2 == ['2'].valueOf(); -> 2 == '2' -> 2 == 2;
    '2' == [2];     // true, '2' == [2].toString(); -> '2' =='2';
    
    []+{} // "[object Object]"
    []+[] // ""
    1+[], []+1 // "1"
    
    {}+[]  //0  这里[]解析成0
    
    {}+1 // 1
    1+{} // "1[object Object]"
    
    {}+{} // "[object Object, object Object]"
    
    /*  简单小结
    [] 解析为 "" 或者0  跟数字运算时解析成数字0, 与字符串运算时解析成空串
    []+{}, {}=[]
    {} 在前面就解析成 0
    {} 在前面就解析成 "[object Object]"
    {} 两个一起的话 都解析成为字符串 "[object Object]"
    */
    

相关文章

  • js中的类型转换

    在js中数据转换分为3种:隐式类型转换,强制类型转换,函数转换 1.隐式类型转换 (1):运算符转换 js中的值在...

  • 类型转换

    js的类型转换分成显示和隐式,显式转换常用类型转换函数进行转换,隐式最多用在条件判断,通常是把字符转为布尔型。类型...

  • 隐式转换的规则

    问题:隐式转换的规则是什么 说起JS的隐式转换规则,我们可以说下JS的基础数据类型 JS的七中类型 我们所熟知的J...

  • JS的基本小结

    JS基本输出方式 JS数据类型 变量 常量 变量常量小练习 声明提前 隐式转换 显示转换/强制转换

  • JS隐式转换

    基础类型 大部分类型错误都被类型转换隐藏了 但少数会出现错误 2.运算符中的"+"运算是从左到右 当字符串与数字相...

  • JS 隐式转换

    隐式转换 数据类型基本数据类型: undefined string boolean null number sym...

  • js隐式转换

    一、 运算中存在的隐式类型转换 1, “+”运算符 var a = 11, b ='22';var c = a +...

  • js隐式转换

    当我们使用if进行判断时,()内的值会被会被转换为boolean类型 undefined:false null:f...

  • JS 隐式转换

    今天在复习隐式转换的时候发现了一些盲点,首先简要回顾一下隐式转换规则。 + 加号,既可以是算术运算符,也可以是字符...

  • js隐式转换

    js隐式转换 boolean == number 当 布尔类型与数字类型进行 ==判断时;是将布尔转为数字,然后在...

网友评论

      本文标题:JS 隐式转换

      本文链接:https://www.haomeiwen.com/subject/blagqxtx.html