简述var、let、const三者的区别
前二者为定义变量,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三者的区别的更多相关文章
- let、var、const声明的区别
前言 看了方应杭老师的一篇解释let的文章,对JavaScript中的声明有了深刻的理解,这里也就有了总结一下JavaScript中各种声明之间区别的这篇文章. JavaScript中变量声明机制 首 ...
- var let const的一些区别
var let const 都是来定义变量的. var let 作用域有些区别. const 类似于java中的常量的概念.即:只能给一个变量赋值一次,即指定一个引用. 举例来说: function ...
- 【ES6】var、let、const三者的区别
首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? ECMAScript是一个国际通过的标准化脚本语言.JavaScript由ECMAScript和DOM.BOM ...
- JS中的块级作用域,var、let、const三者的区别
1. 块作用域{ } <script type="text/javascript"> { var a = 1; console.log(a); // 1 } conso ...
- JS中的var、let、const三者的区别
ES5:var ES6:let.const ES5中的作用域有---全局作用域.函数作用域 ES6中新增了---块级作用域(块级作用域由{}包裹,if语句.for语句中的{}也属于块 ...
- var、let、const三者的区别
var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问. const用来定义常量,使用时必须初始化(即必须赋值),只能 ...
- 请问微信小程序let和var以及const有什么区别
在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. [JavaScript] 纯文 ...
- let和var以及const有什么区别
在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. for(var i=0;i&l ...
- 微信小程序let和var以及const有什么区别
在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. for(var i=0;i&l ...
随机推荐
- Memcached分布式缓存快速入门
一.从单机到分布式 走向分布式第一步就是解决:多台机器共享登录信息的问题. •例如:现在有三台机器组成了一个Web的应用集群,其中一台机器用户登录,然后其他另外两台机器共享登录状态? •解决1:Asp ...
- ASP.NET MVC随记汇总
1.学习教程: 1.ASP.NET MVC4入门教程:Asp.Net MVC4入门指南 2.ASP.NET MVC4系类教程 3.ASP.NET MVC学习系列 4.从零开始学习ASP.NET MVC ...
- php中获取数据 php://input、$_POST与$GLOBALS['HTTP_RAW_POST_DATA']三者的区别
$_POST 只有Coentent-Type的值为application/x-www.form-urlencoded和multipart/form-data两种类型时,$_POST才能获取到数据. $ ...
- Mark 韦氏拼音 邮政式拼音 和汉语拼音
一直感觉很多大学名字不像是汉语拼音也不像是英文,百度了下原来是三种不同的拼音方式: 转载百度百科: 邮政式拼音和威妥玛拼音法并未完全消失.北京大学(Peking University).清华大学(Ts ...
- python逻辑回归 自动建模
#-*- coding: utf-8 -*- #逻辑回归 自动建模 import numpy as np import pandas as pd from sklearn.linear_model i ...
- Java和Spring邮件的发送
方法一: java发送电子邮件:这里以发送qq邮件为例: package test; import java.util.Properties; import javax.mail.Authentica ...
- BZOJ1047[HAOI2007]理想的正方形——二维ST表
题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入 第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非 ...
- 22 Zabbix系统版本升级过程
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 22 Zabbix系统版本升级过程 Zabbix升级与其他相类似系统升级一样,前提一定做好备份,备 ...
- 自学Zabbix6.1 Event acknowledgment 事件确认
自学Zabbix6.1 Event acknowledgment 事件确认 1 概述以往服务器出现报警,运维人员处理完事之后,报警自动取消,但是下一次出现同样一个错误,但是换了一个运维人员,他可能需要 ...
- LoadRunner断言:正确结果有多种情况
用过lr的都知道,我们可以用web_reg_find这个注册函数判断某个请求的返回中是否有我们要找的内容. 但是,如果正常的情况有多种,该如何断言呢? 设置多个检查点 把每个检查点获取到的结果数量相加 ...