如果不使用 var
又该使用什么呢?两种方式 const
和 let
。用起来在语法上是和 var
一样的。但是有几个细节的问题需要注意:
作用范围
我们说 var
不好用就是因为一旦声明,全局起作用,太乱了。那么 const
和 let
都是局部声明,简单说就是只在它所在的大括号内起作用,出去了就没这回事了。
你在你们班是班长,这一点你们班的人都承认。向下到你们班每一个卫生小组,或是每一个学习小组,总之,在你们班的范围内,就都得到承认。但是你跑到我们班来指挥工作就不可以了,我们不认识你。你到老师办公室去指手画脚,就……(别说我没提醒过你。
不过大括号我们还没用过,我们先理解这个比喻就好。
重复声明
var
在范围上不讲道理,在声明上却比较随和,你可以反复声明同一个变量(虽然我们不建议),但是也不会报错。
我们现在各种小测试可能就在 Console 里面简单跑一下,几个例子中的变量名称也是重复的,页面也懒得刷新,但是如果使用的是 var
声明变量可能也没什么错误出现[1]。
但是如果使用了 const
和 let
,那么秒报错,敢让我重复工作?老子甩手不干了!
这是有好处的,这样注释1中的问题就不会出现了。而且在某些特定结构中,用起来也特别便捷(后面会接触到)。
可变与不可变
你看我们说的新的声明方式是两个,他们有什么区别呢?let
和你所想象的一样,它声明的变量就是一个变量,比如:
let a=1;a=2;console.log(a);// 我先给 a 赋值 1,又给 a 赋值为 2,然后输出的值为 2,所以 a 代表的值发生了变化,这也是我们对于变量的基本理解。
那如果换成 const
的话:
const b=1;b=2;console.log(b);
报错说的什么?——试图给常量赋值(Assignment to constant variable. )
。
等等,常量?!想想什么是常量,我们知道一个最常用的常量就是 π
,对,就是圆周率。反正就是那种值一直不变的东东,和变量相对,毕竟变量的值是可以变化的(就像上面那样)。
我们用 const
声明出来的是常量(所以在声明的同时就要给它赋值)。而用 let
声明出来的是变量,诶,这就很清楚了!
该去用谁
有同学说:全用 let
不就没问题了么,想改能改,不需要就不改啊。
但是程序中的情况往往比我们想象的要复杂,到了多人合作的时候就更复杂了,你的变量能不能依旧保持不变呢?这是一个未知数。
所以我们能用 const
就不用 let
,没有特殊的理由就不用 var
。
可能你说常量什么的局限性太大,那么你真的以为 const
声明的常量就是绝对不变的么?这一点等我们学到面的知识时再讲解。
暂无评论内容