JS的数据类型
JS的数据类型有7种:
- number 数字
- string 字符串
- bool 布尔
- symbol 符号
- null 空
- undefined 空
- object 对象
当然,目前还有个bigint,有兴趣可以自行查看一下哦( ̄︶ ̄)↗
!特别提醒:常见数组、函数、日期都属于object哦,不是单独的数据类型(╯▽╰ )~~
主要说一下几个容易忘记的点
- 关于转义:
- ' 表示 '
- " 表示 "
- \n 表示换行
- \r 表示回车
- \t 表示 tab 制表符
- \ 表示 \
- \uFFFF 表示对应的 Unicode 字符
- \xFF 表示前 256 个 Unicode 字符
- JS 的 number 全都是以小数(浮点数)的形式存储的,没有单独的整数。
- UTF-8 是 Unicode 一种存储规则,也叫字符编码规则。
- 五个falsy的值==>falsy 就是相当于 false 但又不是 false 的值,分别是 undefined null 0 NaN ''
- 关于很zz的两个空空==>本质毫无区别
- 如果一个变量声明了,但没有赋值,那么默认值就是 undefined,而不是 null
- 如果一个函数,没有写 return,那么默认 return undefined,而不是 null
var、let、const
- var、let声明变量,const声明常量。
- let的一些规则:
- 遵循块作用域,即使用范围不能超出 { }
- 不能重复申明
- 可以赋值,也可以不赋值
- 必须先声明再使用,否则报错
- 全局声明的 let 变量,不会变成 window 的属性
- for 循环配合 let 有奇效
- 这里第六点就涉及到了一个变量提升的概念:
按照阮一峰老师的讲解:
如果仅仅是看这个,那大家大可不必来看我说的,我主要想让你看到,let的特别:
你会发现,同样的代码,对于let,它并不会发生变量提升。(当然有很多的文章也在某些地方证明了let也是有变量提升的,身为一个出入行的小菜,我就不探讨它了。)
这也就是为什么,在我上一篇文章最后的for循环中,let的表现能出乎意料的一个根本原因吧。