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

    类型转换
    1、数据类型
    2、显示类型转换
    3、隐示类型转换
    1、ECMAScript最新的7中数据类型
    原始类型 Number String Boolean Null Undefined Symbol(es6)
    对象 Object
    2、显示类型转换
    1)Number函数
    <script type="text/javascript">
      /**
      * 原始类型:数值,字符串,布尔值,undefined,null
      */
      console.log(Number(324)) // 324
      // 字符串转换后如果可以被解析成数值,则转换为相应的数值,否则得到NaN
      console.log(Number('324')) // 324
      console.log(Number('324abc')) // NaN
    
      console.log(Number('')) // 0
      // true转成1,false转成0
      console.log(Number(false)) // 0
      // 转成NaN
      console.log(Number(undefined)) // NaN
      // 转成0
      console.log(Number(null)) // 0
    
      /**
      * 对象类型
      * 先调用对象自身的valueOf方法,如果该方法返回原始类型的值,则直接对该值使用Number
      * 方法,不再进行后续步骤
      *
      * 如果valueOf返回复合类型的值,再调用对象自身的toString方法,如果toString方法
      * 返回原始类型的值,则对该值使用Number方法,不再进行后续步骤
      *
      * 如果toString方法返回的是复合类型的值,则报错
      */
      var a = {a:1}
      console.log(Number(a)); // NaN
      /**
      * 为什么是这个值,首先调用对象自身的valueOf方法,a.valueOf返回的是一个对象,复合类型{a:1}
      * 再调用对象自身的toString方法,a.toString,这个时候返回是基本类型字符串"[object Object]"
      * 这个时候Number('[object Object]') 就变成了NaN
      */
    </script>
    2)String函数
    <script type="text/javascript">
      /**
      * 原始类型:数值,字符串,布尔值,undefined,null
      */
      console.log(String(123)); // "123"
      console.log(String('abc')); // "abc"
      console.log(String(true)); // "true"
      console.log(String(undefined)); // "undefined"
      console.log(String(null)); // "null"
    
      /**
      * 对象
      * 先调用toString方法,如果toString方法返回的是原始类型的值,则对值使用String方法,
      * 不再进行以下步骤
      *
      * 如果toString方法返回的是复合类型的值,再调用valueOf方法,如果valueOf方法返回的
      * 是原始类型的值,则对该值使用String方法,不再进行以下步骤。
      *
      * 如果valueOf方法返回的是复合类型的值,则报错
      */
      console.log(String({a:1})) // "[object Object]"
      // b.toString() 返回 "[object Object]" 是字符串,就不再继续了
    </script>
    3)Boolean函数
    <script type="text/javascript">
      /**
      * 原始类型:undefined,null,-0,+0,NaN,'' => false
      */
      console.log(Boolean(undefined));
      console.log(Boolean(0));
      console.log(Boolean(NaN));
      console.log(Boolean(null));
      console.log(Boolean(''));
      // 其他一律为true
      console.log(Boolean([])); // true
      console.log(Boolean({})); // true
    </script>
    3、隐示类型转换
    1)四则运算(加法,减法,乘法,除法)
    2)判断语句
    3)Native调用
    <script type="text/javascript">
      // 四则运算
      console.log(100 + 10); // 110
      console.log(100 + '10'); // 10010
    
    
      //判断语句
      var a = 100;
      if (a) {
        console.log('a come in');
      }
      var b = '';
      if(b) {
        console.log('b come in')
      }
      // 打印出了a come in,没打印出b come in
    
      // native代码调用
      alert({a:1}); // [Object Object]
    </script>



  • 相关阅读:
    protobuf 使用
    rsync实现Linux与windows增量更新数据
    单例模式-通用写法1
    cxf RESTful service client
    IDEAspringboot项目自动生成junit测试
    Centos8配置网络NM
    Oracle终止正在执行中的存储过程
    Mysql Statement violates GTID consistency: CREATE TABLE ... SELECT.
    shell中判断变量是否存在某个集合中
    redis-ha部署
  • 原文地址:https://www.cnblogs.com/wzndkj/p/10153990.html
Copyright © 2011-2022 走看看