1、var声明的变量存在变量声明提升,而let和const声明的变量不存在变量声明提升

var声明的变量存在变量声明提升,因此在声明之前访问该变量不会报错,而使用let和const会报错:

console.log(a);//undefined
// console.log(b);//报错 ReferenceError: Cannot access 'b' before initialization
console.log(c);//报错 ReferenceError: Cannot access 'c' before initialization
var a = 'hello'
let b = 10
const c = 20

2、var声明的变量可以重复声明,而let和const声明的变量不可以重复声明

var重复声明不报错,而let和const重复声明会报错:

var a = 'hello'
var a = 10
console.log(a);//10

3、var声明的变量不存在局部作用域(块级作用域),而let和const声明的变量存在块级作用域

var声明的变量不存在块级作用域,因此在外部可以访问到{}里面声明的变量,但是let和const不行:

if(true){var a = 'hello'let b = 10const c = 20
}
console.log(a); //hello
console.log(b); //报错 ReferenceError: b is not defined
console.log(c); //报错 ReferenceError: c is not defined

4、var声明的变量会被挂载到window上,而let和const声明的变量不会挂载到window上

var a = 10;
let b = 20;
const c = 30;
console.log(window.a); //10
console.log(window.b); //undefined
console.log(window.c); //undefined

5、用const声明变量时,声明的时候就一定要赋值,否则报错

const a
a = 10
console.log(a); //报错 SyntaxError: Missing initializer in const declaration

JavaScript的关键字var、let、const三者的区别相关推荐

  1. 【零基础学JS -4 】Javascript的变量-var let const

    大家好,我是半夏

  2. const char * 、char const *、 char * const 三者的区别

    一.const char *ptr; 定义一个指向字符常量的指针,这里,ptr是一个指向 char* 类型的常量,所以不能用ptr来修改所指向的内容,换句话说,*ptr的值为const,不能修改.但是 ...

  3. Javascript基础之-var,let和const深入解析(二) - 三者的规范描述、临时死区 (TDZ)、双定义

    文章目录 # var 规范 - 描述 # let 和 const 规范 - 描述 # 临时死区 (TDZ) # 双定义 # 总结 你想在在变量声明之前就使用变量?以后再也别这样做了. 新的声明方式(l ...

  4. javascript中var、let、const声明的区别

    我在上一篇文章javascript中词法环境.领域.执行上下文以及作业详解中的最后稍微提到了有关var.let.const声明的区别,在本篇中我会重点来分析它们之间到底有什么不同. 提到var.let ...

  5. 一看就懂的var、let、const三者区别

    哈喽大家好,又见面啦,我依旧是那个可爱的蛙人. 今天又周五了啊,划水人的一天,开心. 话不多说哈,直接搂代码 var 变量提升机制 我们在全局作用域中或还是在局部作用域中,使用var关键字声明的变量, ...

  6. javascript 声明变量var、let、const详解及示例

    1. var.let.const概述 ES6发布前,Javascript只能通过var声明变量的方式,常量.块级变量.函数变量这些概念的差别都不能很好的体现出来,于此同时,加入你要使用或者提供一个ap ...

  7. 前端开发:JS中let、var和const的区别详解

    前言 前端开发过程中,JS声明变量的关键字想必开发者都不陌生,而且使用的频率在前端开发过程中也是数一数二的.JS中声明变量的关键字有三个let.var和const,但是三者的使用对比和区别也是非常重要 ...

  8. JavaScript保留关键字及危险变量名

    JavaScript保留关键字及危险变量名 定义变量名需谨慎 在开发过程当中,如果没有必要就尽可能少的使用以下列出的单词作为变量名称或者属性名称,关键字是严格不允许,而浏览器定义的变量名或者类名在使用 ...

  9. var/let/const、块级作用域、TDZ、变量提升

    概览 ES6 新增了两个定义变量的关键字:let 与 const,它们几乎取代了 ES5 定义变量的方式:var.let是新的var,const简单的常量声明. function f() {{let ...

最新文章

  1. dc综合与pt静态时序分析(中文)_小三电系统(PDU+DC+OBC)的技术研究
  2. Spring boot(八):RabbitMQ详解
  3. html让a标签左右一样宽,button和a标签设置相同的css样式,但是宽度不同
  4. [转载]XSS 攻擊常用腳本
  5. S2011打印机的IP设置
  6. windows查看linux文件工具,「实用工具」介绍几款Windows系统与Linux服务器传递文件的工具...
  7. Spring Web MVC框架简介
  8. 小米蓝牙左右互联_399元,真香!小米蓝牙耳机Air,同价位比有线体验还出色?...
  9. Java结构型设计模式之装饰者模式
  10. 一步一步学Repast 第二章(把界面显示出来)
  11. python数据结构之动态规划
  12. 单片机定时器TMOD与TCON详解!
  13. 微信小程序——拼图游戏案例
  14. java输出数组中所有数字排列的集合
  15. Vue报错Invalid handler for event “click“: got undefined的原因及解决办法
  16. silverlight ajax调用,基于RIA的AJAX和Silverlight研究与应用
  17. 配置OpenWRTnbsp;校园网实现amp;nbsp…
  18. Ubuntu16.04挂载exfat格式U盘
  19. 早期股权分配不是有钱就能搞定的!
  20. 多线程实现火车站卖票

热门文章

  1. 中秋之美——html+css+js制作中秋网页
  2. 《情海星空—我与刘德华》连载 刘德华前女友回顾当年情事的真情告白
  3. 深入了解Jit编译发生的过程
  4. 逆变器simulink模型——处理器在环测试(PIL)
  5. 关于LED OLED LCD PCB元件3D封装库(直插式/贴片式)的细节说明
  6. 肖特基(Schottky)二极管与普通二极管的区别
  7. C语言scanf与gets函数的区别
  8. 设置QLineEdit无边框且透明
  9. 为chosen jQuery插件动态添加未找到的下拉框值
  10. EXCEL电子表格简单字典功能