版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.csdn.net/dugushangliang/article/details/88999863
看菜鸟教程的笔记看到一句话觉得欠妥当——“JavaScript 允许重复声明变量,后声明的覆盖之前的”,相应网址为:http://www.runoob.com/js/js-variables.html
这个笔记所引用连接为:https://blog.csdn.net/chy555chy/article/details/62888993
我的想法是:
JavaScript允许变量被重复声明,在声明变量时JavaScript会自行判断这个变量是否已经被声明了,如果已经被声明(即已经存在),那么重复声明(即除了变量的非首次声明)会被跳过,不再执行声明的操作。
JavaScript变量的值是可以被重复赋值的,最后的赋值是这个变量最后的结果。
var a=1;
var a=2;
//赋值覆盖相当于:
var a;
//a=1;
a=2;
//声明覆盖相当于:
//var a=1;
var a=2;
这个笔记所说的覆盖,其实是赋值的覆盖。如果说后声明的会覆盖已声明的,那么后声明的应该是undefined而不是第一次声明时候的赋值,也就是说如果是声明覆盖的话,相当于没有var a=1那么一个只有声明没有赋值的变量,它的值就是undefined。
我们如何验证这个覆盖是声明的覆盖还是赋值的覆盖呢?看下面的代码:
var a=1;
var a;
//赋值覆盖相当于:
var a;
//a=1;
a;
//声明覆盖相当于:
//var a=1;
var a;
我们再输出a的值,验证下是undefined还是1就知道了。
console.log(a);
独孤尚良dugushangliang——著