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

Posted iiiLISA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
        

以上是关于js变量的重复声明问题总结的主要内容,如果未能解决你的问题,请参考以下文章

关于变量声明的var,let,const

总结let 与 const新特性

JS变量重复声明以及忽略var 声明的问题及其背后的原理

ES6总结

JS简记

let和const