JS中值可以分为七个类型
两空四基一对象
基本数据类型:undefined,null ,字符串(string),数值(number),布尔值(boolean),
复杂数据类型:对象(object)
ES6新增的基本数据类型:symbol类型。
undefined和null
undefined和null都可以表示没有,在用法上有区别。
- 如果一个变量已声明,但未赋值,那么默认值是 undefined
- 如果一个函数没有 return,那么默认值是 undefined
- 习惯上使用undefined来表示一个空的非对象,用null来表示一个空的对象。
字符串(string)
字符串就是零个或多个排在一起的字符。
//单引号'你好'//双引号"你好"//反引号`你好`
- 如果想要在字符串中添加特殊符号,比如单双引号本身,则需要在符号前加转义符\来表示。
- 一个字符串里不能直接使用换行符,同样需要在换行符前加\, 或者直接使用\n来表示换行。
字符串可以被视为字符数组,利用索引值来获取每一个字符,如果索引超过字符串长度或者不是数字,返回undefined,字符串内部单个字符无法通过这种方式该变或者删除,同时长度也无法更改。
数字(number)
JS中用64位浮点数的二进制来表示所有数值,JS能表示的范围为2-1023,如果超过最大范围,会返 回Infinity(无穷),如果小于最小范围,会返回0。
64位构成:
第1位:符号位,0表示正数,1表示负数;
第2位到第12位(共11位);指数部分;
第13位到第64位(共52位):小数部分(即有效数字)。
特殊数值
- 正负0,基本相同,只有在表示符号位时,和当做分母时的返回值不一样。
- NaN,表示非数字,主要出现在将字符串解析成数字出错的场合,数据类型依然属于number,不等于任何值,包括自身,和任何数的运算得到的都是NaN。
- Infinity,表示无穷,用来表示两种场景:
一正值太大,或负值太小;
二非0除以0,得到Infinity。
有正负之分,用来计算时,Infinity和正常非零数值进行加减乘除运算时,结果都是无穷。
0*Infinity,返回NaN;0/Infinity,返回0;Infinity/0,返回Infinity;Infinity和自身做加乘运算返回自身,做减除运算返回NaN;和null计算时,null会被转成0来计算;和undefined计算,返回的都是NaN。
布尔值(boolean)
布尔值只有两种结果:true和false,
当出现运算符时结果会返回一个布尔值,如果预期某个位置应该是布尔值,会将现有的值转为布尔值输出。
五个falsy值
分别是0, NaN, null, undefined,’’(空字符串)。
就是这五个值在转换为布尔值都是false,其中比如空数组[], 空对象{}转换为布尔值都是true.
JavaScript 数据类型转换
转换为String
//String()String(a);//变量加上空字符串a + ''.(a表示一个变量)//toString方法比如数字可以用toString方法可以转换为字符串//空号里面写常量(100).toString//常量后面跟空格100 .toString//常量后面跟两个空格1..toString*一个空格就是不行,会报错!一个空格意味着调用Object的属性或者这是一个浮点数。所以我们要告诉浏览器,这是一个数字null和undefinde不能使用.toString(),会报错对象的.toString()方法会返回'[object Object]'
转换为Boolean类型(两种方法)
//使用Boolean(a)Boolean(null) // false//!!a . (a是一个变量)!!null // false
转换为Number(5种方法)
Number(x)parseInt(x, 10) // 10代表十进制parseFloat(x) // 转为浮点数x - 0x.valueof()
