JavaScript(三):数据类型

314 阅读3分钟

计算机存储信息的形式为01,也就是二进制

进制缩写

HEX:十六进制, BIN:二进制, OCT:八进制, DEC:十进制

JS的数据类型

  1. 数字 number
  2. 字符串 string
  3. 布尔 bool
  4. 符号 symbol
  5. 空 undefined
  6. 空 null
  7. 对象 object 总结:四基两空一对象
    以下不是数据类型:数组、函数、日期,它们都属于object

number

注意:JS中的数字都是以浮点数形式存储的!!!没有整数!!!
number由64位浮点数组成,根据IEEE754标准,符号占一位,指数占11位(-1023~1024),有效数字占52位(开头的1省略)。
除了常规写法,还支持科学计数法、进制写法。
特殊的数字:

  1. 正0和负0,都是0
  2. 无穷大: infinity、+infinity、-infinity
  3. 无法表示的数字:NaN (Not a number)

string

每个字符两个字节(阉割版UTF-8) 写法有单引号''、双引号""和反引号``。反引号支持多行字符串。
单引号里加单引号怎么办?使用转义符

'it\'s ok // 这就是转义'

转义符的更多用法请自行Google,在此不一一列举。

boolean

boolean取值:truefalse
五个falsy值(相当于false但又不是false的值):undefinednull0Nan''(不是' '哦!)

undefined和null

两种空类型,这是JS的原(垃)创(圾)之处。 区别:没有本质区别

  • 如果一个变量声明了,但没有赋值,那么默认值就是undefined,而不是null
  • 如果一个函数,没有写return,那么默认return undefined,而不是nullnull更倾向于主动定义的空类型,undefined更倾向于默认被动定义)
  • 前端开发者的习惯上,把非对象的空值写为undefined,把对象的空值写为null,但仅仅是习惯上而已

symbol

不怎么用,有需求时自行Google。

变量声明

三种声明方式

var a = 1;
let a = 1;
const a = 1;
a = 1;

区别:

  • var是过时的,不好用的方式
  • let是新的,更合理的方式(ES6),变量声明
  • const是声明时必须赋值(ES6),一般认为是常量声明
  • 最后一个语句是赋值,辟谣:绝对不是声明全局变量!! 建议: 写代码不要用var

let声明规则

  • 遵循块作用域,即使用范围不超出{}
{let a = 1;}
console.log(a);

此段代码会报错,因为console.log(a)脱离了变量a的作用域。

  • 不能重复声明
  • 可以赋值,也可以不赋值
  • 必须先声明再使用,否则报错
  • 全局声明的let,不会变成window的属性
  • for循环配合let有奇效
for(let i=0; i<5; i++){
    setTimeout(() => { console.log(i); })
}

const声明规则

  • let声明规则一样
  • 只有一条不一样:声明时就要赋值,赋值后不能改。只读变量的另一种叫法:常量

类型转换

number => string

var n = 1;
String(n);

或者n+''或者''+n

string => number

var s = '123';
Number(s);

或者s-0或者+s或者parseInt(s)

x => bool

Boolean(x)或者!!x

x => string

  • String(x)
  • x.toString()or(number).toString()ornumber..toString(),这算是某种bug。