JavaScript var, let, const difference All In One
JavaScript var, let, const difference All In One
js var, let, const 区别 All In One

- 是否存在 hoisting
var 存在 hoisting; let, const 不存在 hoisting;
let, const 存在 TDZ 暂时死区,在定义之前,不可以访问

const log = console.log;
log(`i =`, i);
// Uncaught ReferenceError: i is not defined
typeof i;
let i = 10;
// Uncaught ReferenceError: i is not defined

词法作用域
function test(){
var foo = 33;
if(foo) {
// Uncaught ReferenceError: Cannot access 'foo' before initialization
let foo = (foo + 55);
}
}
test();
- 作用域不同
var 是全局scope或函数 scope; let, const 是 block scope;
全局作用域里面定义的 const, let 不会挂载到 window 对象上面;
全局作用域里面定义的 var 会挂载到 window 对象上面;

const log = console.log;
var a = 1;
log(`a =`, window.b);
let b = 1;
log(`b =`, window.b);
const c = 1;
log(`c =`, window.c);


- 能否重复声明
var 可以重复声明; let, const 不可以重复声明
- 能否重新赋值
var 可以重新赋值, let 可以重新赋值; const 值类型不可以重新赋值, 但是如果是引用类型 Object 可以,如修改 Object 的属性值;
- 声明时否要初始化
var 可选初始化; let 可选初始化, 但是存在 TDZ(暂时死区); const 声明时必须初始化,存在 TDZ(暂时死区);
refs
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
JavaScript var, let, const difference All In One的更多相关文章
- 【前端面试】(四)JavaScript var let const的区别
视频链接: JavaScript var let const的区别 - Web前端工程师面试题讲解 参考链接: JavaScript 变量 JavaScript Let JavaScript Cons ...
- JavaScript—var lef const区别
今天刚刚学JavaScript 因为以前学过.学起来也就轻松.今天在练习.流程控制语句的时候,用WebStrom 写的时候 var 声明变量的时候 下面老是有一条白线.开始以为是开发环境有问题 然后, ...
- javascript中var let const三种变量声明方式
javascript中var let const三种变量声明方式 1.var ①var表示声明了一个变量,并且可以同时初始化该变量. ②使用var语句声明的变量的作用域是当前执行位置的上下文:一个函 ...
- es6(var,let,const,set,map,Array.from())
1.变量声明--var,const,let 1.1 var - (全局作用域,局部作用域)会有变量提升 //第一个小例子 <script> var num = 123; function ...
- let、var、const声明的区别
前言 看了方应杭老师的一篇解释let的文章,对JavaScript中的声明有了深刻的理解,这里也就有了总结一下JavaScript中各种声明之间区别的这篇文章. JavaScript中变量声明机制 首 ...
- var和const和let的区别
简述: 1.前端的变量申明,可以用到var,ES6的const(衡量)/let(变量) 2.在ES5用的都是var,到ES6之后,也就是2015年开始出现const/let. var 不会报错,有声明 ...
- JavaScript Let 和 Const
来源:菜鸟教程:https://www.runoob.com/js/js-let-const.html JavaScript let 和 const ECMAScript 2015(ECMAScrip ...
- js var & let & const All In One
js var & let & const All In One js var & let & const 区别对比 var let const 区别 是否存在 hois ...
- Learn-JavaScript-with-MDN 系列文章: 01. var & let & const 对比
Learn-JavaScript-with-MDN 系列文章: 01. var & let & const 对比 var & let & const 区别 https: ...
随机推荐
- Connection Pool
MySQL :: MySQL Connector/NET Developer Guide :: 4.3 Managing a Connection Pool in Connector/NET http ...
- (009)每日SQL学习:Oracle各个键说明(转)
原文地址:http://www.agiledata.org/essays/keys.html 本文概述关系数据库中为表指定主键的策略.主要关注于何时使用自然键或者代理键的问题.有些人会告诉你应该总是使 ...
- AWS Lightsail 开启 Root 登陆权限
将下面代码中的第一句中的 Passwd 改为自己将要设置的密码,否则默认 root 密码为 Passwd. #!/bin/bash echo root:Passwd |sudo chpasswd ro ...
- python 文件的方法
1.open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError. 注意:使用 open ...
- Prometheus+Grafana+kafka_exporter监控kafka
Prometheus+Grafana+kafka_exporter搭建监控系统监控kafka 一.Prometheus+Grafana+kafka_exporter搭建监控系统监控kafka 1.1K ...
- mysql int类型 int(11) 和int(2)区别
CREATE TABLE `learn` ( `id` int(11) unsigned NOT NULL, `exp` int(2) DEFAULT 0, PRIMARY KEY (`id`)) E ...
- MySQL 中的自增主键
MySQL 的主键可以是自增的,那么如果在断电重启后新增的值还会延续断电前的自增值吗?自增值默认为1,那么可不可以改变呢?下面就说一下 MySQL 的自增值. 特点 保存策略 1.如果存储引擎是 My ...
- 翻译:《实用的Python编程》01_Introduction_00_Overview
目录 | 下一节 (2 处理数据) 1. Python 简介 本章是第一章,将会从头开始介绍 Python 基础知识,让你从零开始,学会怎么编写.运行.调试一个简单的程序.最后,你可以运用这些 Pyt ...
- Notepad++ 替换 CRLF 为 LF
对于文件中每一行的结尾符号,Windows 下默认为 CRLF,而 Unix 下默认为 LF. 所以经常会有这样的情况发生:在 Windows 系统下编辑的文件放在 Unix 下不能正常执行,比如 b ...
- Kubernetes-5-2:Harbor仓库的几种高可用方案与搭建
高可用Harbor搭建 思路及介绍 Harbor官方有推出主从架构和双主架构来实现Harbor的高可用及数据备份. 一.主从架构: 说白了,就是往一台Harbor仓库中push镜像,然后再通过这 ...