了解JavaScript中的五种基本数据类型与类型之间的转换
首先我们先来了解下五种基本类型都有哪些
基本数据类型: string number Boolean null undefined
1. 字符串 String
var a = '内容';
var a = "内容";
字符串特点:
字符串一旦创建,它们的值不能改变, (要改变的话:先销毁原来的字符串,再使用新的字符串填 充变量)
2. 数字 Number
var a = 1;
var b = 124;
(1)数字有整数,浮点数;
所谓的浮点数值,就是该数值中必须包含一个小数点,并且小数点后必须至少有一位数字
由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机地将浮点 数值转换为整数值
1. =》1
10.0 =》 10
(2)范围从负无穷(-Infinity)到0 到正无穷(+Infinity);
* Infinity是无法参与计算的;
* 判断值是否超过JavaScript数值范围可以使用:
isFinite(num)
(3) NaN :即非数值(Not a Number)是一个特殊的数值;
* NaN指的"不是一个数字",可以理解为"无效数值","失败数值", "坏数值";
* 用于指出数字类型中错误的情况:执行数学运算没有成功,这是失败后返回的结果;
* 任何涉及NaN的操作都会返回NaN;
* NaN与任何值都不相等;
* 判断是否"不是数值",参数为任意类型: isNaN();
3. 布尔 Boolean
var a = true;
var a = false;
只有两个字面值: true 和 false
在ECMAScript中所有的类型的值都有与这两个Boolean值等价的值
4. null 空
var a = null;
空对象指针 准备给对象用的坑
null表示准备用来保存对象,还没有真正保存对象的值
typeof检测null时会返回 "object" :
最初在JavaScript最初实现中,JavaScript的值是由一个表示类型的标签和实际数值来表示的, 对象的类型标签是0,由于null代表的空指针,因此null的类型标签也成为了0,typeofnull就返回了object
5. undefined 未定义;
var a = undefined;
var a;
准备给基本数据类型用的坑
只有一个值,在使用var声明变量但还没有加以初始化赋值时,这个变量的值就是undefined
类型的转换
(1) 转字符串:
String(变量):
null与undefined可使用这个转型函数
var str = 'abc';var num = 234;var bool = true;var un = undefined;var nu = null;
console.log(String(num)); // '234'
console.log(String(bool)); // 'true'
console.log(String(un)); // 'undefined'
console.log(String(nu)); // 'null'
变量.toString(2 || 8 || 10 || 16)
参数是基数(几进制);数值、布尔值、对象和字符串都有这个方法,null与undefined则没有
数字转为字符串的特殊方法:
数字.toFixed(位数)
保留小数点后几位,并采取四舍五入
(2) 转数字:
* Number()
布尔值: true - 1; false - 0;
var bool = true;
console.log(Number(bool)); //1
var bool = false;
console.log(Number(bool)); //0
Null: 0
var nu = null;
console.log(Number(nu)); //0
Undefined: NaN
var un = undefined;
console.log(Number(un)); //NaN
字符串:
只包含数字(前面携带正负号)
前导零会被忽略
识别浮点、整数、16进制(自动转为同等大小的十进制数值)
空字符串 - 0
除上述之外 均为NaN
var c = Number('1前端'); // NaN;
var c = Number('1'); // 1;
var c = Number('前端1'); // NaN;
* parseInt() 转为整数
忽略字符串前面的空格,直至找到第一个非空字符,
如果第一个字符不是数字字符或者正负号 返回 NaN
如果第一个字符是数字字符,parseInt会继续解析第二个字符,知道解析完所有后续字符 或者遇到了一个非数字字符
字符串以'0x'开头且后跟数字字符,就会将其当作一个十六进制整数
字符串以'0'开头且后跟数字字符,则会将其当作一个八进制数来解析
空字符串 返回 NaN
提供第二个参数:转换时使用的基数(进制)
var a = parseInt('123.9前端'); // 123;
var a = parseInt('前端123'); // NaN;
* parseFloat() 转为浮点数
第一个小数点是有效的,第二个小数点是无效的
只解析十进制,无第二个参数
十六进制式的字符串始终被转换为 0
var b = parseFloat('1239前端'); // 1239;
var b = parseFloat('1.9前端'); // 1.9;
var b = parseFloat('前端1.9'); // NaN;
(3) 转布尔值:
Boolean()
0,空字符串,NaN, undefined ,null 转布尔都为false
基本类型之间的转换是一个重点,一定要记清楚:
JavaScript是一种弱类型语言,其中的数据类型在不同情况下会发生隐性的转换,如果不清楚类型的转换,可能之后的代码报错都找不到原因。
网友评论