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

if(true){var a=1;let b=2;}console.log(a);//1console.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变量的重复声明问题总结相关推荐

  1. JS函数简单的底层原理 -变量重复声明无效,隐式申明,变量提升,函数提升,以及堆栈内存的变化

    JS函数简单的底层原理 (个人理解): 1. 已经使用var申明且赋值,若再次申明,则第二次申明(不赋值)无效. 2.在同一个作用域下,只要是发生了同名,且变量完成赋值,后者会覆盖前者.存在两个相同的 ...

  2. js 变量、函数重复声明和变量提升浅析

    第一阶段:看山是山,看水是水 先从简单的例子开始 // 示例1 var a = 1 console.log(a) // 1 var a = 2 console.log(a) // 2 通过两个var声 ...

  3. Js 变量声明提升和函数声明提升

    Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

  4. php变量和js变量的区别吗,JS声明变量的3种方式和区别

    JavaScript 是弱类型语言,可以不需要声明变量而直接使用.这样虽然简单但不易发现变量名方面的错误,所以不建议这样做.通常的做法是在使用 JavaScript 变量前先声明变量.目前,JavaS ...

  5. 【JS里面使用var声明变量存在的三个问题】

    1.允许重复声明,导致变量被覆盖.看如下代码: var a = 1; function prinf(){console.log(a); }var a = 2;prinf(); 结果输出: 这里假设你v ...

  6. golang重复声明变量

    golang使用简短方式声明变量,左侧必须要有一个新变量,变量也可以重复声明. func main() {test1 := 0test1, test2:= 1, 2 test1:= 3 //错误 } ...

  7. [新手学go]关于go语言中的变量重复声明

    代码一: package mainimport ("fmt" )func main() {a,b :=1,2 a,b := 3,4fmt.Println(a, b) } 代码二: ...

  8. php声明js变量类型,js中变量是什么以及有哪些类型

    在js中,变量是存储信息的容器:JavaScript中有两种类型的变量:局部变量和全局变量. js如何声明变量? 在js中,可以使用关键词"var"或者"let" ...

  9. js变量以及其作用域详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.变量的类型  Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量 ...

最新文章

  1. ==和equals()的作用及区别
  2. DB2命令行查看执行计划
  3. 【Python】青少年蓝桥杯_每日一题_10.03_输出数据
  4. Windows系统appium移动端自动化真机环境搭建
  5. 关于Ajax工作原理
  6. I - Arbitrage(判断是否有无正环 II)
  7. 怎么打包图片_房产也能批发!澳村庄40栋房打包出售,总价$175万,买了变村长!...
  8. 银行业务系统数据库设计与实现
  9. 解决PHP提示Warning: Division by zero in错误
  10. 这六大方法,如何让 Transformer 轻松应对高难度长文本序列?
  11. 安装北洋雷达驱动以及可能遇到的问题
  12. 李沐动手学深度学习_环境搭建
  13. 签名格式_职场商务电子邮件礼仪
  14. 数据结构之你没见过的排序算法!
  15. Springboot web项目简单统计在线人数
  16. win10计算机右键属性打不开,右键电脑属性打不开|解决win10系统我的电脑属性打不开...
  17. “对不起,您只能拨打中国移动的号码…”
  18. dd-wrt 去广告_如何在DD-WRT上使用Pixelserv删除广告
  19. SCrapy爬虫大战京东商城
  20. python3+selenium实现自动进熊猫直播间发弹幕的脚本

热门文章

  1. 教师需要为学生的学习把握节奏
  2. three.js加载三维模型(obj文件mtl文件)
  3. vue3.x 中使用 vant <van-image>图片不显示的问题
  4. 搭建Discuz论坛网站-最新版Discuz3.4
  5. linux 网络 指示灯 亮,Linux网络子系统中GRO的实现
  6. 王迪手机软件测试,王迪的作品集 - 新片场
  7. 村子里有50个人,每人有一条狗,在这50条狗中有病狗(这种病不传染),于是人们要找出病狗。
  8. 关于String字符串的比较
  9. Theano的安装及GPU的配置
  10. VNC树莓派无法连接