类型转换

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

 



posted @ 2018-12-21 09:56  wzndkj  阅读(179)  评论(0编辑  收藏  举报