目录
1 var
2 new
3 function
4 let
4.1 let不能在同一作用域下重复声明
4.2 let无法进行变量提升
4.3 var的变量会跑出当前作用域,但是let不会
4.4 let与var的循环定时器问题
5 const
5.1 简单值
5.2 复杂值
1 var
使用var只能让函数内部使用它,而无法网页中所有部分都使用它,作用域问题可以看一下这个 12.作用域_Suyuoa的博客-CSDN博客
2 new
创建数组,对象
数组的使用方式可以看一下这个 10. 数组 Array_Suyuoa的博客-CSDN博客
对象的使用方式可以看一下这个 14. 对象_Suyuoa的博客-CSDN博客
3 function
function是声明函数用的
函数的具体使用方法可以看一下这个 11. 函数_Suyuoa的博客-CSDN博客
4 let
let也是定义变量用了,与var有下面这些区别
4.1 let不能在同一作用域下重复声明
作用域问题可以看一下这个 12.作用域_Suyuoa的博客-CSDN博客
我们先看var
正常
再看let
发现不行,告诉你变量已经被声明过了
使用var也不行,使用let后 在同一作用域内 不许再次声明该变量
但是你不加关键字直接定义是可以的
4.2 let无法进行变量提升
变量提升有问题可以看一下这个 13.预解析_Suyuoa的博客-CSDN博客
我们先看var
发现没有报错
再看let
发现报错了
4.3 var的变量会跑出当前作用域,但是let不会
先看var
再看let
4.4 let与var的循环定时器问题
下面这段代码的执行结果是 1秒钟后打印5个5
我可以利用立即执行函数使其 在1s后打印1到5
如果单说功能的话,想到用上面那种方法的人不多,正常来讲想到下面这种方法的比较多
但其实你也可以这样写
这个let是最难理解的,我们可以理解为这个let可以作用于块作用域内的异步任务,但是var不行
5 const
5.1 简单值
const是声明常量的,对于简单值来讲,这个值第一次声明的什么就是什么,后面就不能再动了
如果你动了就会报错
const不会跑出它的作用域
所以你可以在不同的作用域下声明同名的const变量
5.2 复杂值
如果这样搞,就和简单变量一样,都会报错
如果你只修改其中的值就不会报错,并且可以成功修改
我们可以通过这个例子来看出来const的值并不是不变的,但const的指向是不变的