• 类型转换


    类型转换
    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>



  • 相关阅读:
    Redis 设置密码登录
    SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换...
    laravel 博客项目部署到Linux系统后报错 权限都设置为777,仍然报错没有权限
    linux用netstat查看服务及监听端口
    redis使用rediscli查看所有的keys及清空所有的数据
    一起谈.NET技术,Oxite 项目结构分析 狼人:
    一起谈.NET技术,VS 2010 和 .NET 4.0 系列之《在VS 2010中查询和导航代码》篇 狼人:
    一起谈.NET技术,VS 2010 和 .NET 4.0 系列之《添加引用对话框的改进》篇 狼人:
    一起谈.NET技术,VS 2010 和 .NET 4.0 系列之《代码优化的Web开发Profile》篇 狼人:
    一起谈.NET技术,数组排序方法的性能比较(3):LINQ排序实现分析 狼人:
  • 原文地址:https://www.cnblogs.com/wzndkj/p/10153990.html
Copyright © 2020-2023  润新知