JS几种数据类型及var、let、const的区别

681 阅读2分钟

JS的数据类型

JS的数据类型有7种:

  • number 数字
  • string 字符串
  • bool 布尔
  • symbol 符号
  • null 空
  • undefined 空
  • object 对象 当然,目前还有个bigint,有兴趣可以自行查看一下哦( ̄︶ ̄)↗ 
    !特别提醒:常见数组、函数、日期都属于object哦,不是单独的数据类型(╯▽╰ )~~

主要说一下几个容易忘记的点

  1. 关于转义:
  • ' 表示 '
  • " 表示 "
  • \n 表示换行
  • \r 表示回车
  • \t 表示 tab 制表符
  • \ 表示 \
  • \uFFFF 表示对应的 Unicode 字符
  • \xFF 表示前 256 个 Unicode 字符
  1. JS 的 number 全都是以小数(浮点数)的形式存储的,没有单独的整数。
  2. UTF-8 是 Unicode 一种存储规则,也叫字符编码规则。
  3. 五个falsy的值==>falsy 就是相当于 false 但又不是 false 的值,分别是 undefined null 0 NaN ''
  4. 关于很zz的两个空空==>本质毫无区别
  • 如果一个变量声明了,但没有赋值,那么默认值就是 undefined,而不是 null
  • 如果一个函数,没有写 return,那么默认 return undefined,而不是 null

var、let、const

  • var、let声明变量,const声明常量。
  • let的一些规则:
  1. 遵循块作用域,即使用范围不能超出 { }
  2. 不能重复申明
  3. 可以赋值,也可以不赋值
  4. 必须先声明再使用,否则报错
  5. 全局声明的 let 变量,不会变成 window 的属性
  6. for 循环配合 let 有奇效
  • 这里第六点就涉及到了一个变量提升的概念: 按照阮一峰老师的讲解: image.png 如果仅仅是看这个,那大家大可不必来看我说的,我主要想让你看到,let的特别:

image.png 你会发现,同样的代码,对于let,它并不会发生变量提升。(当然有很多的文章也在某些地方证明了let也是有变量提升的,身为一个出入行的小菜,我就不探讨它了。)
这也就是为什么,在我上一篇文章最后的for循环中,let的表现能出乎意料的一个根本原因吧。