js变量的重复声明问题总结

首先说明一下js声明变量的三种方式:var,let,const
let,const的声明范围是块级作用域,var的声明范围是函数作用域。
体会以下代码:

if(true){
            var a=1;
            let b=2;
        }
        console.log(a);//1
        console.log(b);//报错,Uncaught ReferenceError: b is not defined

let声明的作用域被限制在块级作用域if{}中。

const和let用法性质基本相同,唯一区别,const声明时必须赋值,且后续不能再改变值。

		const a=1;
        console.log(a);
        a=2;//报错:Uncaught TypeError: Assignment to constant variable.
        console.log(a);

const、let和var的区别在于:const、let有块级作用域、不存在变量提升、不属于window的对象、同一作用域内不能重复声明。

1、var重复声明var

(1)var重复声明一个已经var声明的变量是合法的。
(2)var重复声明并赋值一个变量,只是担当一个重新赋值的角色。
(3)如果重复声明但不赋值一个变量,该语句不会对该变量有任何影响。

var a = 100;
function fn() {
	alert(a); //undefined 变量提升
	var a = 200;
	alert(a); //200
}
fn();
alert(a); //100
var a;	//情况3
alert(a); //100
var a = 300;	//情况2
alert(a); //300

2、let重复声明let变量

同一作用域内,let重复声明let变量时不合法的。

if(true){//不合法
            let c=1;
            let c=2;
        }

3、const重复声明const变量

同一作用域内,const重复声明const变量时不合法的。

if(true){//不合法
            const c=1;
            const c=2;
        }

4、let重复声明var变量

同一作用域内,let重复声明var变量不合法。

if(true){
            var c=2;
            let c=1;
            console.log(c);//报错:Uncaught SyntaxError: Identifier 'c' has already been declared
        }

5、const重复声明var变量

同一作用域内,const重复声明var变量不合法。

if(true){
            var c=2;
            const c=1;
            console.log(c);//报错:Uncaught SyntaxError: Identifier 'c' has already been declared
        }

6、let重复声明const变量

同一作用域内,let重复声明const变量不合法。

if(true){
            const c=2;
            let c=1;
            console.log(c);//报错:Uncaught SyntaxError: Identifier 'c' has already been declared
        }

7、cosnt重复声明let变量

同一作用域内,const重复声明let变量不合法。

if(true){
            let c=2;
            const c=1;
            console.log(c);//报错:Uncaught SyntaxError: Identifier 'c' has already been declared
        }

8、var重复声明let变量

同一作用域内,var重复声明let变量不合法。

if(true){
            let c=1;
            var c=2;
            console.log(c);//报错:Uncaught SyntaxError: Identifier 'c' has already been declared
        }

9、var重复声明const变量

同一作用域内,var重复声明const变量不合法。

if(true){
            const c=1;
            var c=2;
            console.log(c);//报错:Uncaught SyntaxError: Identifier 'c' has already been declared
        }
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值