5分钟掌握var,let和const异同
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
原文出处:https://dzone.com/articles/javascript-difference-between-var-let-and-const-ke
这个话题对于一些老鸟来说可能根本算不上疑问,但对于新手来说也许除了最常见的var之外,let和const较少使用的机会。
所以在本文中,我将会通过一些例子来为大家介绍如何在Javascript中灵活使用var、let和const这些关键字来定义变量,以及这些关键字它们之间有什么异同。
如果你懒得看下面的代码,那我可以先把概念结论说出:
- var定义的变量可被更改,如果不初始化而直接使用也不会报错
- let定义的变量和var类似,但作用域在当前声明的范围内
- const定义的变量只可初始化一次且作用域内不可被更改,使用前必须初始化
下面我将通过示例的形式来详细为大家介绍它们三者之间的异同:
Var
var用以声明一个变量,并且同时我们可以在声明语句中初始化所声明的变量。
例如:
var a = 10;
- 变量的声明,会在代码被执行之前被处理。
- 用
var声明的JavaScript变量,其可用范围在当前执行上下文。 - 在函数外声明的JavaScript变量,其作用范围是全局。
考虑以下代码片段:
function nodeSimplified() {
var a =10;
console.log(a); // 输出 10
if(true) {
var a=20;
console.log(a); // 输出 20
}
console.log(a); // 输出 20
}
在上面的代码中,你可以发现,当变量a在if代码段里被更新时,它的值被全局更新了,因此在经过了if代码后,被更新的值仍然被保留着。这与其他语言中的全局变量有点类似。但是,在使用这个功能时要非常小心,因为它有可能会覆盖一个已有的值。
let
let语句在一个块级范围里声明一个局部变量。和var类似,我们可以在声明时初始化它的值。
例如:
let a = 10;
- 这个语句允许你创建一个变量,使它的作用范围被限制在它所在的代码块。
- 它和Java、C#等其他语言的变量类似。
考虑下面的代码片段:
function nodeSimplified() {
let a =10;
console.log(a); // output 10
if(true) {
let a=20;
console.log(a); // output 20
}
console.log(a); // output 10
}
它和大多数语言中我们所见的表现行为是一致的。
function nodeSimplified() {
let a =10;
let a =20; // 抛出语法错误
console.log(a);
}
错误信息:"未捕获的异常:标识符'a'已经被声明过。" 但如果使用var就没事:
function nodeSimplified() {
var a =10;
var a =20;
console.log(a); // 输出 20
}
使用let语句,可以很好的维护变量的作用范围。当使用内部函数时,let语句让你的代码更整洁。
我希望上面的例子能帮你更好地理解var和 let。如果有任何疑问,请在评论区留言。
const
const语言中的变量只能被赋值一次,然后就不能在被赋值。const语句的作用范围和let语句一样。
例如:
const a = 10;
function nodeSimplified() {
const MY_VARIABLE =10;
console.log(MY_VARIABLE); // 输出 10
}
照例,命名规范指出我们应该用大写字母声明常量。当然,const a = 10 在上面的代码中会的起到相同的作用。为了让代码长期可维护,命名规范还是值得遵守的。
问题:如果给一个const变量重新赋值会发生什么? 考虑下面的代码:
function nodeSimplified() {
const MY_VARIABLE =10;
console.log(MY_VARIABLE); // 输出 10
MY_VARIABLE =20; // 抛出类型错误
console.log(MY_VARIABLE);
}
错误信息:"未捕获的类型错误:给const变量赋值"。
当我们尝试给已有的const变量赋值时,这段代码会抛出一个错误。
介绍就到此结束,希望这篇短小精悍的文章能够帮助到各位更好的理解在Javascript中声明变量时使用不同关键字上到底有何异同。
5分钟掌握var,let和const异同的更多相关文章
- var和let/const的区别
let和const是 ES6 新增的命令,用于声明变量,这两个命令跟 ES5 的var有许多不同,并且let和const也有一些细微的不同,再认真阅读了阮一峰老师的文档后,发现还是有一些不知道的细节. ...
- var let Hositing const Temporal Dead Zone
var let Hositing const Temporal Dead Zone 临时死区
- (译文)学习ES6非常棒的特性-深入研究var, let and const
Var var firstVar; //firstVar被声明,它的默认值是undefined var secondVar = 2; //secondVar被声明,被赋值2 先看一个例子: var i ...
- es6 - 一共有 6 种声明变量的方法(var, function, let, const, class, import)
var命令和function命令声明的全局变量,依旧是顶层对象的属性:let命令.const命令.class命令声明的全局变量,不属于顶层对象的属性.也就是说,从 ES6 开始,全局变量将逐步与顶层对 ...
- JavaScript学习系列5 ---ES6中的var, let 和const
我们都知道JavaScript中的var,在本系列的 JavaScript学习系列2一JavaScript中的变量作用域 中,我们详细阐述了var声明的变量的作用域 文章中提到,JavaScript中 ...
- var let及const
es6已经发布很久了,之前只会用var定义变量,学习了let和const后,又学到了一些作用域.JavaScript编译和深拷贝浅拷贝的知识.这章主要来说说这三个定义量的方法: 1.var 在没学习e ...
- JS中 var,let与const的区别
1.在ES6(ES2015)出现之前,JavaScript中声明变量就只有通过 var 关键字,函数声明是通过 function 关键字,而在ES6之后,声明的方式有 var . let . cons ...
- 第一百零六篇:变量的不同声明(var,let和const的不同)
好家伙,JS基础接着学, 本篇内容为<JS高级程序设计>第三章学习笔记 1.变量 ECMAScript 变量是松散类型的,意思是变量可以用于保存任何类型的数据. (确实松散,不像C或C++ ...
- var 和 let 的异同?
相同点 声明后未赋值表现一致 不同点 1.使用未声明的变量表现不同 2.变量作用范围不同 3.var可以声明多次 let只能声明一次 let的好处就是当我们在写代码的时候可以避免在不知道的情况下重复声 ...
随机推荐
- Windows核心编程第二章,字符串的表示以及宽窄字符的转换
目录 Windows核心编程,字符串的表示以及宽窄字符的转换 1.字符集 1.1.双字节字符集DBCS 1.2 Unicode字符集 1.3 UTF-8编码 1.4 UTF - 32编码. 1.5 U ...
- 第11章 创建请求URLs - IdentityModel 中文文档(v1.0.0)
该RequestUrl是创建与查询字符串参数,例如URL的帮手: var ru = new RequestUrl("https://server/endpoint"); // pr ...
- 我学Java我傲娇
今天,终于把学习了一年多的<Java核心技术36讲>第一遍完结了,历时一年多,花出去的钱终于感觉有了第一笔回报. 这是我在极客时间的第一门付费课程,刚出来的时候,正巧自己转到全职Java开 ...
- Dynamics Business Central-如何配置VS Code连接BC环境
最近在研究Business Central,也就是以前的Dynamics NAV,需要配置Visual Studio Code连接BC环境,以下是配置的具体步骤. 1. VS Code下载,这个不多说 ...
- 安卓开发笔记(十一):SharedPrefences储存
一.利用SharedPrefences将数据储存于data.txt当中 package com.example.lenovo.studyittwo; import android.content.Br ...
- Windows Server 2016-三种方法备份还原DHCP服务器
方法一:图形化备份还原DHCP: 备份操作: 1.DHCP控制台,属性选择"备份"选项: 2.指定备份路径,默认是C:\Windows\System32\dhcp\ 3.备份完成后 ...
- ThreadLocal的原理,源码深度分析及使用
文章简介 ThreadLocal应该都比较熟悉,这篇文章会基于ThreadLocal的应用以及实现原理做一个全面的分析 内容导航 什么是ThreadLocal ThreadLocal的使用 分析Thr ...
- 1 小时 SQL 极速入门(三)——分析函数
1 小时 SQL 极速入门 前面两篇我们从 SQL 的最基础语法讲起,到表联结多表查询. 大家可以点击链接查看 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 今天我们讲一些在做报 ...
- WelcomeActivity【欢迎界面】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 简单记录下欢迎界面的布局以及倒计时和跳过功能. 效果图 代码分析 1.修改APP整个主题为无标题栏样式:styles.xml文件 & ...
- 五行Python代码教你用微信来控制电脑摄像头
如果说强大的标准库奠定了Python发展的基石,丰富的第三方库则是python不断发展的保证.今天就来通过itchart库来实现通过微信对电脑的一些操作. 一.安装库 安装itchat itchat ...