前二者为定义变量,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. linux系统安全审计简单设置

    应用安全-安全审计日志目录  /var/log/audit/audit.log [root@localhost audit]# cd /etc/audit/[root@localhost audit] ...

  2. js跨域请求jsonp解决方案-最简单的小demo

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  3. verilog 数据格式

    基数格式(通常为无符号数)[size]'base value size常量的位数 base数制o:8 b:2 d:10 h:16 https://wenku.baidu.com/view/f63daa ...

  4. 如果filename的value有值 说明支持存储

    如果filename的value有值 说明支持存储

  5. Codeforces Round #545 (Div. 1)

    本来开头两道题写得挺快的,然后第三题想了一会儿胡出一个scc计算gcd的做法,写了一发凭借信仰交了上去结果一发pp了?然后第四题沙雕了想了很久才会,于是罚时瞬间变多.结果后面两题都没时间看了,赛后感觉 ...

  6. tomcat 查看和修改内存

    为了解决tomcat在大进行大并发请求时,出现内存溢出的问题,请修改tomcat的内存大小,其中分为以下两种方式: 一.使用 catalina.bat 等命令行方式运行的 tomcat 查看系统最大支 ...

  7. Java监听器Listener的使用详解

    监听器用于监听Web应用中某些对象的创建.销毁.增加,修改,删除等动作的发生,然后作出相应的响应处理.当监听范围的对象的状态发生变化的时候,服务器自动调用监听器对象中的方法.常用于统计网站在线人数.系 ...

  8. POJ3268(Silver Cow Party)

    题意: 有n头牛去第x个点开party(有点高大上~),单向路,去到还得回来,问这n头牛每一头花费的总时间的最大值是多少 模板spfa: #include <iostream> #incl ...

  9. codeforces 777C

    C.Alyona and Spreadsheet During the lesson small girl Alyona works with one famous spreadsheet compu ...

  10. MT【206】证明整数数列

    已知方程$x^3-x^2-x+1=0$,的三根根为$a,b,c$,若$k_n=\dfrac{a^n-b^n}{a-b}+\dfrac{b^n-c^n}{b-c}+\dfrac{c^n-a^n}{c-a ...