zoukankan      html  css  js  c++  java
  • Javascript中的类型转换

    第一部分:Javascript中类型转换的常用场景

    1.在使用运算符进行操作时,常用的运算符就是 + 运算符

    使用+运算符做运算时,由于只有 字符串 和数字 才能够使用+运算符,那么使用时,会根据情况,将不同的数据类型,转换为字符串或者数字

    当+运算符左边的数据类型是数字时, 1 + null === 1 // 这里将null转为了数字0 1 + undefined // NaN undefined无法转为数字 ,那么就会 NaN

    
    1 + NaN   //  NaN 
    
    注意的是 NaN === NaN 以及 NaN == NaN 都是false, 但是 typeof NaN === 'number'
    
    1 + 'a' === '1a' // 数字与字符串或者对象相加,默认转为字符串 
    
    1 + {} === ‘1[object Object] // 对象相加时,默认将对象toString()后相加
    
    1 + { a : 1} === '1[object Object]' // 对象相加时,默认将对象toString()后相加
    
    1 + [] === '1'  // 数组相加时,默认将数组toString()后相加
    
    1 + [1] === '11' // 数组相加时,默认将数组toString()后相加
    
    1 + [1,1,1] === '11,1,1' // 数组相加时,默认将数组toString()后相加

    1 + false === 1

    1 + true === 2
    1 + Object === '1function Object() { [native code] }' 1 + Function === '1function Function() { [native code] }' 1 + function() { return 1} === '1function(){return 1}' 1 + function() { return 1 } === "1function() { return 1 }" 1 + Symbol = '1function Symbol() { [native code] }' 1 + Set = '1function Set() { [native code] }' const str = 'str' str + 1 === 'str1' // 字符串与数字相加 ,转为字符串 str + [] === 'str' // 数组相加时,默认将数组toString()后相加 str + [1] === 'str1' // 数组相加时,默认将数组toString()后相加 str + [1, 1, 1] === 'str1, 1, 1' // 数组相加时,默认将数组toString()后相加 str + {} === 'str[object Object]' // 对象相加时,默认将对象toString()后相加 str + {a : 1} === 'str[object Object]' // 对象相加时,默认将对象toString()后相加 str + NaN === 'strNaN' // 字符串与NaN相加 str + null === 'strnull' str + undefined === 'strundefined'

    str + true === 'strtrue'

    str + false === 'strfalse'
    字符串与函数相加结果与数字类似

    其他类型的数组之间使用 + 运算符时

    null + null === 0 //
    
    false + false === 0 // 

    true + true === 2 //

    true + false === 1

    undefined + null // NaN

    null + undefined // NaN

    undefined + undefined // NaN

    false + null === 0

    true + null === 1

    true + undefined // NaN

    undefined + true // NaN

    false + undefined // NaN

    undefined + false // NaN

    2. 使用 ==  和 === 运算符时

    1 == true  // true 
    
    0 == false // true 
    
    0 == null // false
    
    0 == undefined // false
    
    0 == '' // true
    
    '' == false // true
     
    null == false // false 
    
    '' == null // false
    
    '' == undefined // false
    
    undefined == false // false
    
    null == undefined // true
    
    1 == '1', 1 == true, '1'==true  // true
    
    '0' == false, false == 0, 0 == '0'  // true
    
    '0' == true // false
    
    NaN 不能 == 任何值,甚至 NaN != NaN
    
    [] == [] // false 
    
    {} == {} // false 
    
    对于引用类型数据来说 ,地址是不可能相同的,所以 [] == [] , {} == {} 是false
    
    Symbol(1) == Symbol(1) // false
    
    Symbol类型的任何值都不会和其他值 相等,因为Symbol本身就是定义独一无二的值

    3.补充说明,if的判断条件

    if的判断条件是把小括号中的值转换成boolean形式的值
    
    即对小括号中的值使用Boolean()方法转换
    
    那么 
    Boolean(1) === true
    
    Boolean(0) === false
    
    Boolean(null) === false
    
    Boolean(undefined) === false
    
    Boolean(NaN) === false 
    
    Boolean(Symbol()) ===  true
    
    Boolean('') === false
    
    Boolean({}) === true
    
    Boolean([]) === true
    
    Boolean(function(){}) === true
    
    Boolean('0') === true
    
    // 最特殊的情况
    Boolean(new Boolean(false)) === true
  • 相关阅读:
    Python异常处理
    Python 线程、进程和协程
    python版本升级及pip部署方法
    Python socket编程
    循环遍历方法笔记
    TCP/IP协议分为哪四层,具体作用是什么。
    Python Paramiko模块与MySQL数据库操作
    Python面向对象编程(二)
    h5专题常用小代码
    sethc问题
  • 原文地址:https://www.cnblogs.com/liquanjiang/p/11369451.html
Copyright © 2011-2022 走看看