8种
数字number
字符串string
布尔bool
符号symbol
空undefined
空null
大数bigInt
对象object
总结:四基两空一对象
前边七种都是简单类型,只有object叫做复杂类型,可以下节课学。
基本数据类型和引用类型的区别详解
https://segmentfault.com/a/1190000008472264
基本数据类型
- 基本数据类型的值是不可变的
你认为的改变只是“指针的指向改变” - 基本数据类型不可以添加属性和方法
也再次说明基本类型是不可变的 - 基本数据类型的赋值是简单赋值
如果从一个变量向另一个变量赋值基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上 - 基本数据类型的比较是值的比较
- 基本数据类型是存放在栈区的
引用数据类型
- 引用类型的值是可以改变的
- 引用类型可以添加属性和方法
- 引用类型的赋值是对象引用
- 引用类型的比较是引用的比较
- 引用类型是同时保存在栈区和堆区中的
数字和字符串
功能不同
数字是数字,字符串是字符串
数字能加减乘除,字符串只能“相加”
字符串能表示电话号码,数字不行
存储形式不同:
JS中,数字是以64位浮点数形式存储(JS 的 number 全都是以小数(浮点数)的形式存储的,没有单独的整数)
JS中,字符串是以类似UTF8形式存储的(UCS-2) 0-127表示所有符号
number中的特殊值
-
正0 和 负0
都等于0,要严谨
- 无穷大
infinity +infinity -infinity - NaN无法表示的数字
NaN(Not a Number)
但是它是一个数字
字符串
每个字符两个字节(阉割版UTF8)
' ' 单引号
" " 双引号
` ` 反引号
引号不属于字符串的一部分。
如果要在单引号里包含单引号怎么办?
当然是转义了
错误写法:'it's ok'
JS引擎会认为 'it' 就已经结束了
正确写法:'it's ok' 或 "it's ok" 或it's ok
布尔
五个falsy值,falsy就是相当于false但是又不是false的值,分别是undefined null 0 NaN ''(注意:'' 和 ' '不是一个元素)
undefined 和 null两种空类型
没有本质区别
如果一个变量声明了但是没有赋值,他的默认值就是undefined,而不是null
如果一个函数,没有写return,那么默认return undefined,而不是null
变量声明
三种声明方式
var a = 1
let a = 1
const a = 1
a = 1
区别:
var是过时的、不好用的方式
let 是新的,更合理的方式(声明变量)
const是声明时必须赋值,且不能再改的方式。(声明常量)
let声明
规则:
遵循块作用域,使用范围不能超出{}
不能重复声明
可以赋值也可以不赋值
全局声明的let变量,不会变成windows的属性。
for循环配合let有奇效
const声明
规则:跟let几乎一样
只有一条不一样,声明时就要赋值,赋值后不能改。
类型转换
number => string
String(n)
n + ''
string=>number
Number(s)
parselnt(s)/parseFloat(s)
s - 0
x=>bool
Boolean(x)
!!x
x=>string
String(x)
x.toString()
js秘密花园 里总结了JS的各种奇葩错误
1 && 2 的值是 2,取第一个0或者最后一个值
0 && 2 的值是 0
网友评论