JS中值可以分为七个类型

两空四基一对象
基本数据类型:undefinednull ,字符串(string)数值(number)布尔值(boolean)
复杂数据类型:对象(object)

ES6新增的基本数据类型:symbol类型。

undefined和null

undefined和null都可以表示没有,在用法上有区别。

  • 如果一个变量已声明,但未赋值,那么默认值是 undefined
  • 如果一个函数没有 return,那么默认值是 undefined
  • 习惯上使用undefined来表示一个空的非对象,用null来表示一个空的对象。

字符串(string)

字符串就是零个或多个排在一起的字符。

  1. //单引号
  2. '你好'
  3. //双引号
  4. "你好"
  5. //反引号
  6. `你好`
  • 如果想要在字符串中添加特殊符号,比如单双引号本身,则需要在符号前加转义符\来表示。
  • 一个字符串里不能直接使用换行符,同样需要在换行符前加\, 或者直接使用\n来表示换行。

字符串可以被视为字符数组,利用索引值来获取每一个字符,如果索引超过字符串长度或者不是数字,返回undefined,字符串内部单个字符无法通过这种方式该变或者删除,同时长度也无法更改。

数字(number)

JS中用64位浮点数的二进制来表示所有数值,JS能表示的范围为2-1023,如果超过最大范围,会返 回Infinity(无穷),如果小于最小范围,会返回0。
64位构成:
第1位:符号位,0表示正数,1表示负数;
第2位到第12位(共11位);指数部分;
第13位到第64位(共52位):小数部分(即有效数字)。

特殊数值

  1. 正负0,基本相同,只有在表示符号位时,和当做分母时的返回值不一样。
  2. NaN,表示非数字,主要出现在将字符串解析成数字出错的场合,数据类型依然属于number,不等于任何值,包括自身,和任何数的运算得到的都是NaN。
  3. Infinity,表示无穷,用来表示两种场景:

一正值太大,或负值太小;
二非0除以0,得到Infinity。
有正负之分,用来计算时,Infinity和正常非零数值进行加减乘除运算时,结果都是无穷。

  1. 0*Infinity,返回NaN
  2. 0/Infinity,返回0
  3. Infinity/0,返回Infinity
  4. Infinity和自身做加乘运算返回自身,做减除运算返回NaN
  5. null计算时,null会被转成0来计算;
  6. undefined计算,返回的都是NaN

布尔值(boolean)

布尔值只有两种结果:true和false,
当出现运算符时结果会返回一个布尔值,如果预期某个位置应该是布尔值,会将现有的值转为布尔值输出。

五个falsy值

分别是0, NaN, null, undefined,’’(空字符串)。
就是这五个值在转换为布尔值都是false,其中比如空数组[], 空对象{}转换为布尔值都是true.

JavaScript 数据类型转换

转换为String

  1. //String()
  2. String(a);
  3. //变量加上空字符串
  4. a + ''.(a表示一个变量)
  5. //toString方法
  6. 比如数字可以用toString方法可以转换为字符串
  7. //空号里面写常量
  8. (100).toString
  9. //常量后面跟空格
  10. 100 .toString
  11. //常量后面跟两个空格
  12. 1..toString
  13. *一个空格就是不行,会报错!一个空格意味着调用Object的属性或者这是一个浮点数。
  14. 所以我们要告诉浏览器,这是一个数字
  15. nullundefinde不能使用.toString(),会报错
  16. 对象的.toString()方法会返回'[object Object]'

转换为Boolean类型(两种方法)

  1. //使用Boolean(a)
  2. Boolean(null) // false
  3. //!!a . (a是一个变量)
  4. !!null // false

转换为Number(5种方法)

  1. Number(x)
  2. parseInt(x, 10) // 10代表十进制
  3. parseFloat(x) // 转为浮点数
  4. x - 0
  5. x.valueof()