为什么会有数据转换?
在做前端页面的时候,有时候会涉及到页面中数据的处理(加减乘除)
————————————————————————————————
例子: 西瓜 与 南瓜
就像是西瓜和南瓜一样,如果想熬一锅南瓜汤也不能在里面放上一块西瓜,那么这个时候就需要把西瓜变成南瓜了。
什么是数据类型的转换呢?
1.JS 是弱类型语言,而且JS声明变量的时候并没有预先确定的类型
2.变量的类型就是其值的类型,也就是说变量当前的类型由其值所决定的
3.夸张点说上一秒种的String,下一秒可能就是个Number类型了
4.这个过程可能就进行了某些操作发生了强制类型转换
5.虽然弱类型的这种不需要预先确定类型的特性给我们带来了便利,同时也会给我们带来困扰。
Number()
Number();可以将任意类型数据转为数值型,对任何类型都生效,转不成数字都是NaN 用于任何数据类型转化为数值
语法格式:Number(参数)
返回值: 数值
规则:
1: null 转 number:
结果为 0 ; Number(null)// 0
2: Undefined转number:
结果为NaN;
console.log(Number(undefined)) //NaN
var a;
console.log(Number(a))//NaN
3、布尔 转 number 结果:
true = number //1
console.log(Number(ture)) //1
false = number // 0
console.log(Number(false)) //0
4、空字符串 转 number 结果 //0
console.log(Number(' ')) //0
5、非空字符串 转 number 规则
如果字符串里 的内容全部是有效数字,那么就转成对应的有效数字,否则,转number后就是NaN.
var arr = '123';
console.log(Number(arr)); //123
var arr1 = '12.34'
console.log(Number(arr1)); //12.34
var arr2 = '12.31.54';
console.log(Number(arr2)); //NaN
var arr3 = '123nx';
console.log(Number(arr3)); //NaN
var arr4 = '你好';
console.log(Number(arr4)); //NaN
'注意:数字前面有零的就省率0'
var arr5 = '012138';
console.log(Number(arr5)); //12138 注意;如果前面有0的化就会默认隐藏掉
parseInt()取整
给浮点小数进行取整
将字符串转换为整数.从第一位开始,直到非数字位结束
语法格式:parseInt(string)
返回值: number
————————————————————————————————————————
规则:
1)从第一个字符开始转换,如果第一个字符就是非数字,那么得到的一定是NaN,
2)如果第一个不是非数字,就向后转换,直到遇到一个小数点,或非数字,则停止转换,将前面转面转的内容输出
// 注意:如果使用parseInt进行转换,他会把字符型转成数字型的,并且取整
案例:
var a = '123';
console.log(parseInt(a)); //123
var b = '13.14';
console.log(parseInt(b));//12
var c = '12.31.14';
console.log(parseInt(c)); //12
var d = '你好';
console.log(parseInt(d)); //NaN
var e = 'w123';
console.log(parseInt(e)); //NaN
var r = '123w';
console.log(parseInt(r)); //123
parseFloat()取浮点数
语法:parseFloat(string)
功能:将字符串转换为浮点数.从第一位开始看,直到非数字位或无效的浮点数字结束
返回值: number类型
规则:
1)从第一个字符开始转换,如果第一个字符就是非数字,那么得到的一定是NaN,
2)如果第一个不是非数字,就向后转换,直到遇到第二个小数点,或非数字,则停止转换,将前面转面转的内容输出
var a = '123';
console.log(parseFloat(a)); //123
var b = '12.12';
console.log(parseFloat(b)); //12.12
var c = '12.31.14';
console.log(parseFloat(c));//12.31
var d = '你好';
console.log(parseFloat(d)); //NaN
var e = 'w12.31'
console.log(parseFloat(e));// NaN
var r = '12.31w';
console.log(parseFloat(r));//12.31
isNaN() 检测是否是非数字
isNaN()函数使用
语法格式:isNaN(参数)
功能:判断参数是否不是数值,不是数值返回true,是数值返回false
返回值:布尔值
规则:
参数能转化为数值时,返回值为false
参数不能转化为数值时,返回值为true
说明:isNaN();会发生一个隐式转换,会尝试着将检测值转为number;然后进行判断
例子:
console.1og (isNaN(123)) ://false;
console.1og (isNaN("123a")) ://true:
console. log (isNaN(true)) ://false
console.log(isNaN(NaN)); //true
console.log(isNaN(10)); //false
console.log(isNaN("10")); //false
console.log(isNaN("blue")); //true
console.log(isNaN(true)); //false
Boolean()
语法格式:Boolean(参数)
功能:将参数转换成一个布尔值,true或者false
返回值:布尔值
规则:
null undefined NaN 0 “”会转换成false
只要不是以上五个其它都会转换成true
案例:
1:等于flase的://null undefined '' 0 NaN
// 1.null
console.log(Boolean(null)); //false
// // 2. 0
console.log(Boolean(0)); //false
// // 3.''
console.log(Boolean('')); //false
// // 4.undefined
console.log(Boolean(undefined)); //false
// // 5.NaN
console.log(Boolean(NaN)); //false
2:等于ture的://数字 非空字符串 一个空对象 一个空数组
// 1. 123
var a = 123
console.log(Boolean(a));//ture
// // 2.非空字符串
var b = '天很蓝,找一个风很大的地方把我忘了';
console.log(Boolean(b));//ture
// // 3.空的一个对象
var c = {};
console.log(Boolean(c));//ture
// // 4.空数组
var d = [];
console.log(Boolean(d));//ture
总结转布尔规律: