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变量的重复声明问题总结的主要内容,如果未能解决你的问题,请参考以下文章