JavaScript 数据类型及类型转换

JavaScript 数据类型及类型转换

JS是弱类型,如果没有给变量定义类型,那么这个变量可以随便改变值的类型,所以要考虑变量类型,才能操作

1)字符型 string
被双引号,单引号,`所引起来的都是字符型,字符再console内显示为黑色字体
2)数值型 number
整型 / 正整型 / 浮点型
数值再console内显示为蓝色字体
0开头数字 为八进制 eg:062
0x开头数字为 十六进制 eg: 0x3a
var a1 = 4e + 2 // 科学计数法 =>400
var a1 = 0.4e - 2 // 科学计数法 =>0.004
3)布尔型 boolean
true / false 用于判断或开关
4)undefined 未定义值 var c=undefined; 与 var c; 含义相同
5)null 空值
一个变量以指针的形式指向堆中的地址,当不需要再指向时,就必须设置该变量的值为 null

var x = y = 5; 先赋值给前面的x,再赋值给后面的y

typeof 检测数据类型(有返回结果)
var a = null;
console.log( typeof a ); —— object 对象

强制转换
主动将数据的类型强制转换成某种类型
计算机中任何数据进行计算都需要转换成二进制

强转字符串
1)String(数据); (所有类型都可以转换)
2)(数据).toString ;是对象的方法(null 和 undefined 不能转换 )
(数据).toString(n) ; 将数字转换成 n 进制字符 (进制必须大于等于 2 且小于等于36 )
3)(数据).toFixed(n) ; 数值转成字符串并保留小数点后 n 位,四舍五入(存在误差)
产生误差的原因:因为电脑只识别二进制,输入的十进制先转换为二进制录入,在进行转字符时再转为十进制就会产生误差
解决方法:尽量不要保留一位小数,保留一位小数时,先*100取整后再除以100
4)a=a.toPrecision(n);//保留数值的数量,科学计数法
5)a=a.toExponential(n); //保留n位小数 科学计数法
6)a=a.toLocaleString();//转换为本地字符串
object转换为字符串

var a={a:1,b:2};
a=String(a);
console.log(a);//[object Object]  *****

强转数值
1)Number(数据)
纯数字字符 =>数字; 纯字母字符 => NaN; 带字母字符 => NaN; null => 0; undefined => NaN;
true => 1; false => 0
(NaN 含义是非数值,它的类型是 number )

强转整型
1)parseInt( )
纯数字字符 =>数字;纯字母字符/以字母开头的带数字字符 => NaN; null => NaN;undefined => NaN;
true => NaN; false => NaN;
数字开头带字母的字符 => 转换到第一个字母字符前为止,前面的数字字符转成数字
2)parseIn(str,n)将 n 进制字符串str 转换成 10进制数值,没有n时,默认以10进制显示str字符串并转换程10进制数值
parseInt(str,n)是(数据).toString(n)的逆转换

强转浮点型
parseFloat(n); 可以保留小数位

强转布尔型
Boolean(数值);
1)空字符串 var str1 = “”;
2)数值 0 var str2 = 0;
3)false var str3 = false;
4)未定义 var str4;
5)null var str5 = null;
6)NaN var str6 = NaN;
console.log(str)——false
除以上六点为false以外,其他结果均为 true
var a=" ";空格字符串
a=Boolean(a);
console.log(a);——true

数组Array
var arr=[];空数组
var b=Boolean(arr);转为布尔型
console.log(b);——true
console.log(![]==[]);——true
遇到!优先转换为布尔型,否则优先转换为字符串
![]转换为布尔型为false;
[1,2,3]数组转换为字符串为"1,2,3";
[]—>""空数组转换为字符串为空字符串
空字符串转换为布尔型为false
所以比较结果为真

能够执行if的方法有几种?
6种,使a的布尔值为false

			var a="";
			if(!a){
				}

遇到!需要将值转换为布尔值取反

隐式转换
弱类型语句中,类型不同,弱类型语言会自动将数据转换为相同类型,然后运算
隐式转换遵从 String() Number() Boolean(),都是强制转换

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页