我是靠谱客的博主 愉快百褶裙,最近开发中收集的这篇文章主要介绍js类型转换总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • js类型分类
      js的分为两种数据类型:基本数据类型和引用数据类型。
         - 基本数据类型:String Number Boolean null undefined NaN
         - 引用数据类型:object对象 arry数组 function函数 正则表达式RegExp 日期Date
         -不同数据类型的存放方式
      基本数据类型大小固定,不会动态增加,所以基本数据类型的数据是将变量值直接存放在栈中 按值存取。并且由于栈内存有限(速度是仅低于cpu寄存器的速度),所以将基本数据类型放在栈中;
      引用数据类型由于其经常动态的增加,所以存放在堆中。在声明一个引用型变量时,内存会在栈中分配一个地址用来存放变量的引用地址,引用地址指向堆中的真实变量值。所以引用数据类型是通过按址访问如下图:
<script>
 var a = 1;
 var b = {name:'ywy',
 		  age:'18'
 		};
</script>

在这里插入图片描述

具体关于js数据存放地址的问题可以参考这个链接

  • 类型基本介绍

   - String 字符串
字符串表示文本数据,是由一串16位的无符号整数值组成的元素。取字符串有两类方式,也分别代表了其对字符串的两种理解。
   - 将字符串理解成一个类数组。
每个字符在字符串中占据一个位置。var a = 'ywy';var b = a[0];//b = 'y'
   - 将字符串理解成一个整体。
使用charAt(index)或者 substr()方法获取第几位字符。
字符串转化位其他数据类型的方式
1、显示转换
 调用String()方法
     var a = 123;console.log(String(a));
 调用toString()方法
     var a = 123;a.toString();
2、隐式转换
  使用+拼串改变原类型
     var a = 123;var b = ' '+ a;
更多string应用可以点击这里

 - Number 数值类型

字符串表示文本数据,是由一串16位的无符号整数值组成的元素。
取字符串有两类方式,也分别代表了其对字符串的两种理解。
   - 将字符串理解成一个类数组。每个字符在字符串中占据一个位置。var a = 'ywy';var b = a[0];//b = 'y'
   - 将字符串理解成一个整体,使用charAt(index)或者 substr()方法获取第几位字符。
字符串转化位其他数据类型的方式
显示转换
  调用Number()方法
     var a = '123';console.log(Number(a));
规则是
将字符串中全为数字、Boolean、空串、null的变量转成数字,只要字符串中为非数字的字符串、undefined就无法转成数字,而会是NaN,not a number.
隐式转换
使用parse方式可以有效针对字符串为非纯数值的情况。转换会从头开始寻找数字,并返回该数字直到没有数字遇到字符结束。所以字符串的开始如果是字符不是数字就会立即结束返沪NaN。
  调用parseInt()方法 var a = '123abc';var b = a.parseInt(a);
  调用parseFloat()方法 var a = '123.236fse';var b = a.parseFloat(a);
可能你已经发现了,两个方法的不同之处在于parseFloat可以将小数取出来,但是parseInt()不可以。
parseInt(参数,进制数);方法可以将数值转换成想要的进制数。比如parseInt(19,8) 将19 十进制数转换成8进制 。

Boolean 布尔值
Boolean对象是一个布尔值的包装器
声明布尔:

var bool = true;
var boola = new Boolean(true);

1、显示转换
 调用Boolean()方法
     var a = 123abc;console.log(Boolean(a));
注意:如果将一个变量作为参数创建变量,变量的值为true;

var f = new Boolean(false);
var g = new Boolean(f);  //g 为true

 使用Boolean()方法改变变量类型的规律
   带有否定意义变量值的变量再转化时都会转成false。
比如:

null , ' '空字符串 , undefined , NaN ,

但是引用数据类型即使内容为空,因为栈中任然存有变量的访问地址,所以不算是空,转化为布尔值之后为true

2、隐式转换
  调用!!双非方法转化为布尔类型
     var a = ywy;var b = !!a;

 -null 空对象
值 null 是一个字面量,不像 undefined,它不是全局对象的一个属性。null 是表示缺少的标识,指示变量未指向任何对象。把 null 作为尚未创建的对象,也许更好理解。在 API 中,null 常在返回类型应是一个对象,但没有关联的值的地方使用。

// foo 不存在,它从来没有被定义过或者是初始化过:
foo;
"ReferenceError: foo is not defined"

// foo 现在已经是知存在的,但是它没有类型或者是值:
var foo = null; 
foo;
null

null 与 undefined 的不同点:
当检测 null 或 undefined 时, 注意相等()与全等(=)两个操作符的区别 ,前者会执行类型转换:

typeof null        // "object" (因为一些以前的原因而不是'null')
typeof undefined   // "undefined"
null === undefined // false
null  == undefined // true
null === null // true
null == null // true
!null //true
isNaN(1 + null) // false
isNaN(1 + undefined) // true  

 -NaN not a number
NaN代表的意思是不是一个数值。通常用在变量类型转换时结果不是数值类型返回NaN。
NaN比较特殊, NaN 属性是一个不可配置(non-configurable),不可写(non-writable)的属性。但在ES3中,这个属性的值是可以被更改的,但是也应该避免覆盖。
注意:NaN不等于任何值,包括其自身。NaN !==NaN NaN !===NaN 所以当我们需要判断一个变量是否是NaN时可以调用isNaN()方法。

最后

以上就是愉快百褶裙为你收集整理的js类型转换总结的全部内容,希望文章能够帮你解决js类型转换总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部