概述
- 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类型转换总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复