前二者为定义变量,const一般用来定义常量。

1、var声明变量可以重复声明,而let不可以重复声明

  var name = 'xiaohuang';
var name = 'xiaolan';
console.log(name);//xiaolan
 let name = 'xiaohuang';
let name = 'xiaolan';
console.log(name);//报错'name' has already been declared

2、var是不受限于块级的,而let是受限于块级

 {
var a = 10;
}
console.log(a);//10
//在花括号外面和里面打印都会出来10
 {
let a = 10;
}
console.log(a);//Uncaught ReferenceError: a is not defined
//而let声明,只能在花括号里面打印,在外面打印就报错了

3、var会与window相映射(会挂一个属性),而let不与window相映射

 var m = 20;
console.log(window);

 let m = 20;
console.log(window);

同理,var可以引用全局对象,而let不可以

 var user = '小明';
console.log(window.user);//小明
 let user = '小明';
console.log(window.user);//undefined

4、var可以在声明的上面访问变量,而let有暂存死区,在声明的上面访问变量会报错

 console.log(bosh);//undefined
var bosh = 100;
 console.log(bosh);//ReferenceError: bosh is not defined
let bosh = 100;

最后说下const,const有以下几个特性

1)声明之后必须赋值,否则会报错

  const arr;
console.log(arr);//Missing initializer in const declaration

2)定义不可变的量,改变了就会报错

 const num = 100;
const num = 200;
console.log(lis);//Identifier 'num' has already been declared

3)不会与window相映射(不在window上挂一个属性)

4)支持块级作用域,只要有{}都支持块级

5)在声明的上面访问变量会报错

注:后三个特性和let一样,就不举例子了~

const应用场景:

一般这个值不会变了,就用常量。

获取静态元素的时候可以使用

比如

const lis = document.querySelectorAll('li');

简述var、let、const三者的区别的更多相关文章

  1. let、var、const声明的区别

    前言 看了方应杭老师的一篇解释let的文章,对JavaScript中的声明有了深刻的理解,这里也就有了总结一下JavaScript中各种声明之间区别的这篇文章. JavaScript中变量声明机制 首 ...

  2. var let const的一些区别

    var let const 都是来定义变量的. var let 作用域有些区别. const 类似于java中的常量的概念.即:只能给一个变量赋值一次,即指定一个引用. 举例来说: function ...

  3. 【ES6】var、let、const三者的区别

    首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? ECMAScript是一个国际通过的标准化脚本语言.JavaScript由ECMAScript和DOM.BOM ...

  4. JS中的块级作用域,var、let、const三者的区别

    1. 块作用域{ } <script type="text/javascript"> { var a = 1; console.log(a); // 1 } conso ...

  5. JS中的var、let、const三者的区别

    ES5:var          ES6:let.const ES5中的作用域有---全局作用域.函数作用域 ES6中新增了---块级作用域(块级作用域由{}包裹,if语句.for语句中的{}也属于块 ...

  6. var、let、const三者的区别

    var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问. const用来定义常量,使用时必须初始化(即必须赋值),只能 ...

  7. 请问微信小程序let和var以及const有什么区别

    在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. [JavaScript] 纯文 ...

  8. let和var以及const有什么区别

    在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. for(var i=0;i&l ...

  9. 微信小程序let和var以及const有什么区别

    在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. for(var i=0;i&l ...

随机推荐

  1. mouseover与mouseenter,mouseout与mouseleave的区别

    mouseover事件:不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件,对应mouseout事件: mouseenter事件:只有在鼠标指针穿过被选元素时,才会触发 mouse ...

  2. 操作系统+编程语言的分类+执行python程序的两种方式+变量

    1.什么是操作系统? 操作系统就是一个协调\管理\控制计算机硬件资源与软件资源的一个控制程序. 2.为何要操作系统? a.把复杂的硬件操作封装成简单的功能\接口用来给用户或者程序来使用(文件) b.把 ...

  3. Delphi+DBGrid导出Excel

    uses ComObj; //DBGrid:指定的DBGrid;SaveFileName:要保存的文件名 function ExportDBGrid(DBGrid: TDBGrid; SaveFile ...

  4. 设计模式【PHP案例】

    内容来源: 波客 菜鸟教程 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式. 在策略模式中,我们创建表示各种策略的对 ...

  5. Java原子类实现原理分析

    在谈谈java中的volatile一文中,我们提到过并发包中的原子类可以解决类似num++这样的复合类操作的原子性问题,相比锁机制,使用原子类更精巧轻量,性能开销更小,本章就一起来分析下原子类的实现机 ...

  6. FreeBSD ZFS

    FreeBSD ZFS https://www.cnblogs.com/hadex/p/6068476.html 参考資料 http://docs.oracle.com/cd/E37934_01/ht ...

  7. MT【51】一道三角求最值问题

    [Genius is one percent inspiration and ninety-nine percent perspiration]--- 爱迪生 [Without the one per ...

  8. 机器学习&深度学习资料收集

    缘由 以下博客都是我在学习过程中看到的一些知识讲解非常好的博文,就不转载了,直接给出链接方便以后重复访问.有了自己的理解之后再重新整理资料发布吧 : ) sklearn系列 http://www.cn ...

  9. CF724F Uniformly Branched Trees

    CF724F Uniformly Branched Trees 有根树可以统计.无根树难以统计.因为可以换根. 所以不让换根:只要两个无根树在重心位置不同构,就一定不同构 每个本质不同的树在重心位置统 ...

  10. C# 数组&集合&泛型集合

    一.数组 必须规定类型,必须规定长度:  1.定义 int[ ] i = new int[5]; int[] j = new int[]{1,2,3,4,5}; 2.数组的遍历: Console.Wr ...