zoukankan      html  css  js  c++  java
  • JavaScript基础学习心得05

    强制类型转换

    1. Number()
    2. String()
    3. Boolean()

    Number()

    举一些需要记的:

    // 字符串:如果不可以被解析为数值,返回 NaN
    Number(‘324abc’) // NaN
    
    // 空字符串转为0
    Number(‘’) // 0
    
    // undefined:转成 NaN
    Number(undefined) // NaN
    
    // null:转成0
    Number(null) // 0
    

    parseInt和Number

    • 不同之处:
      parseInt逐个解析字符
      Number函数整体转换字符串的类型
    parseInt(’42 cats’) // 42
    Number(’42 cats’) // NaN
    
    • 相同之处:
      都会过滤字符串前后空格

    Number方法的参数是对象时,将返回NaN,除非是包含单个数值的数组:

    Number({a: 1}) // NaN
    Number([1, 2, 3]) // NaN
    Number([5]) // 5
    

    先调用valueOf,然后调用toString

    如果想让对象做参数时不返回NaN,要怎么做?

    1. 重写valueOf方法,让其返回原始类型值;
    2. 重写toString,让其返回原始类型值;
    3. 如果都改了的话,前者优先于后者。

    String()

    String方法的参数如果是对象,返回一个类型字符串;如果是数组,返回该数组的字符串形式:

    String({a: 1}) // “[object Object]”
    String([1, 2, 3]) // “1,2,3”
    

    先调用toString,然后调用valueOf

    重定义两个方法会有什么效果?

    String({
      toString: function () {
        return 3;
      }
    })
    // “3”
    
    String({
      valueOf: function () {
        return 2;
      }
    })
    // “[object Object]”
    
    String({
      valueOf: function () {
        return 2;
      },
      toString: function () {
        return 3;
      }
    })
    // “3”
    

    Boolean()

    对象的布尔值都为true

    Boolean(undefined) // false
    Boolean(null) // false
    Boolean(0) // false
    Boolean(NaN) // false
    Boolean(‘’) // false
    
    Boolean({}) // true
    Boolean([]) // true
    Boolean(new Boolean(false)) // true
    

    将表达式变成布尔值

    // 写法一
    expression ? true : false
    
    // 写法二
    !! expression
    

    一元运算符会把运算子转成数值:

    +’abc’ // NaN
    -‘abc’ // NaN
    +true // 1
    -false // 0
    
  • 相关阅读:
    升级ios 不能连原本的xcode /xcode不能抓帧/换xcode版本 build fail
    BlackBerry Key2 键盘扩展
    再议C风格变量声明
    怎样去除SVN中的某个版本之前的所有版本
    mysql 常用基础语句
    乱码问题
    sql server
    MySQL查询今天、昨天、上周、近30天、去年等的数据的方法
    java 时间转换
    sql server 日期
  • 原文地址:https://www.cnblogs.com/endymion/p/9199217.html
Copyright © 2011-2022 走看看