JS数据类型

222 阅读3分钟

JS中的7种数据类型

  1. number:数字
  2. string:字符串
  3. bool:布尔值
  4. symbol:符号
  5. undefined:未定义
  6. null :空
  7. object:对象

1. number : 数字

写法

  • 整数写法:1

  • 小数写法:0.1

  • 科学计数法:1.23e4

  • 八进制写法(用得少):0123或00123或0o123

  • 十六进制写法:0x3F或0X3F

  • 二进制写法:0b11或0B11

特殊值

  • 正0和负0:都等于0

  • 无穷大:Infinity、+Infinity、-Infinity

  • 无法表示的数字:NaN(Not a Number),但它是一个数字

  • isNaN()可以判断一个数是否为NaN,是返回false,不是返回true

console.log(isNaN(12)); // false

2. string:字符串

  • 写法
单引号: '你好'  
双引号: "你好"  
反引号: `你好`  

注意:引号不属于字符串的一部分,就像书名号不属于书名的一部分一样

  • 转义

错误写法:

'it's ok' js引擎会认为'it'就结束了,后面的看不懂

正确写法:

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

"it's ok"

`it's ok`
  • 多行字符串(如果想在字符串里回车,用反引号很容易做到)
let s = `这里是

可以的

用反引号很容易做到`
  • 字符串的长度:String.length
'123'.length // 3

'\n\r\t'.length // 3

''.length // 0

' '.length // 1
  • 通过下标读取字符:String[index]
let s = 'hello',

s[0] // 'h'

注意:index从0开始

let s = 'hello'

s[5] // undefined, 居然不报错

s[4] // '0'
  • base64转码(一般用来隐藏招聘启事里的简历)

windows.btoa : 正常字符串转为Base64编码的字符串

windows.atob: Base64编码的字符串 转为原来的字符串

3. bool:布尔值

只有两个值 true或false,注意大小写

  • 下列运算符会得到bool值
否定运算:!value

相等运算:1===2、1!=2、3===4、3!=4

比较运算:1>2、1>=2、3<4、3<=4

  • if 配bool
if语句常常需要判断真假

if(value){...}else{...}
  • 五个falsy值: falsy就是相当于false但又不是false的值
undefined 、 null 、 0 、 NaN 、 ''
  • bool型和number型相加的时候,true的值为1,false的值为0
console.log(true+1); // 2
console.log(false+1); // 1

4. symbol:符号

不怎么常用的数据类型

5. undefined:未定义

6. null :空

区别:

  • 如果一个变量声明了,但没有赋值,那么默认值就是undefined,而不是null
  • 如果一个函数,没有写return,那么默认return undefined,而不是null
  • 前端程序员习惯上,把非对象的空值写成undefined,把对象的空值写成null,但这仅仅是习惯上的
  • undefined更多是默认的空,null是主动的空

7. object:对象

较复杂的数据类型,单独讲

判断数据类型 typeof

var num = 10; console.log(typeof num); // number

var str = 'william'; console.log(typeof str); // string

var william = true; console.log(typeof william); // boolean

var a = undefined; console.log(typeof a); // undefined

var b = null; console.log(typeof b); // object

类型转换

1. number => string  数字转字符串
   String(n)
   n + ''

2. string => number  字符串转数字
   Number(s)
   parseInt(s) // 取整数
   parseFloat(s) // 可以是小数
   s - 0
   +s

3. x => boll  转为布尔型
   Boolean(x)
   !!x

4. x => string  把任何东西转为字符串
   String(x)
   x.toString()