JavaScript中的let和const
在ES6之前,JavaScript中只有两种作用域:全局作用域和函数内部的局部作用域。ES6中新增了两个重要的关键字,let和const,从而引入了块级作用域。
关键字var
使用var关键字声明的变量不具备块级作用域的特性,即在函数外声明的变量即为全局变量。
var声明的变量可以被重新定义。
var i;
var i; //不报错
使用var声明变量带来的问题
var i = 5;
for (var i = 0; i < 10; i++) {}
console.log(i); //10
for循环里的 i 仍是全局变量里的 i,即使在重新声明了。
关键字let
使用let关键字声明的变量,具备块级作用域。
var i = 5;
for (let i = 0; i < 10; i++){}
console.log(i); //5
let i = 5;
for (let i = 0; i < 10; i++);
console.log(i); //5
在相同的作用域(包括块级作用域)中,不能使用 let 来重置 var 声明的变量
var i;
let i; //SyntaxError: Identifier 'i' has already been declared
在相同的作用域(包括块级作用域)中,不能使用 let 来重置 let 声明的变量
let i;
let i; //SyntaxError: Identifier 'i' has already been declared
在相同的作用域(包括块级作用域)中,不能使用 var 来重置 let 声明的变量
let i;
var i; //SyntaxError: Identifier 'i' has already been declared
let 声明的变量必须先声明再使用
关键字const
const关键字也是用于声明一个或多个“常量”,在声明的同时必须进行初始化,并且初始化之后就不能再修改。
这里要注意以下,使用const声明的初始值不能修改,是指变量与值的引用关系不能改变,也就是说如果你改变“值”,但能保证变量与它引用关系不变,其实是合法的。例如:
const myObject = {
name: "Mr hu",
age: 20
}
myObject.age = 21; //虽然修改了值,但引用关系不变,所以不报错
const myObject = {
name: "Mr hu",
age: 20
}
myObject = {
name: "Mr hu",
age: 21
} //企图改变引用关系,报错
当值为数组时,道理也一样。
const和let有很多共同之处
变量都具备块级作用域。
在相同的作用域(包括块级作用域)中,不能使用 const 来重置 var 和 let 声明的变量。
在相同的作用域(包括块级作用域)中,不能使用 const 来重置 const 声明的变量。
都必须先声明再使用。
JavaScript中的let和const的更多相关文章
- javascript中的var,let,const关键字
文章:JavaScript 中 var 和 let 和 const 关键字的区别 比较全面的文章.
- JavaScript中const、var和let区别浅析
在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始 ...
- JavaScript中var、let和const的区别(转载)
一.前言 在ES6(ES2015)出现之前,JavaScript中声明变量就只有通过 var 关键字,函数声明是通过 function 关键字,而在ES6之后,声明的方式有 var . let . c ...
- javascript中var、let和const的区别
在javascript中,var.let和const都可以用来声明变量,那么三者有什么区别呢?要回答这个问题,我们可以从先想想:三种不同的声明会影响变量的哪些方面?这些方面也就是变量的特性,那么变量有 ...
- javascript中var let const三种变量声明方式
javascript中var let const三种变量声明方式 1.var ①var表示声明了一个变量,并且可以同时初始化该变量. ②使用var语句声明的变量的作用域是当前执行位置的上下文:一个函 ...
- javascript中var、let、const的区别
这几天修改别人的js,发现声明变量有的用var,有的用let,那它们有什么区别呢? javascript中声明变量的方式有:var.let.const 1.var (1)作用域: 整个函数范围内,或者 ...
- javascript中的操作符详解1
好久没有写点什么了,根据博主的技术,仍然写一点javascript新手入门文章,接下来我们一起来探讨javascript的操作符. 一.前言 javascript中有许多操作符,但是许多初学者并不理解 ...
- 深入了解 JavaScript 中的 for 循环
在ECMAScript5(简称 ES5)中,有三种 for 循环,分别是: 简单for循环 for-in forEach 在2015年6月份发布的ECMAScript6(简称 ES6)中,新增了一种循 ...
- ES6中的var let const应如何选择
javascript世界里面的每个人都在说有关ECMAScript 6 (ES6,也称作ES 2015)的话题,对象的巨大变化 ( 类 , super() , 等), 函数 (默认参数等), 以及模块 ...
随机推荐
- 解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的
解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的 .chart{ width: 100%; text-align: center; } .canvas{ ...
- 寒假小软件开发记录06--apk生成
先在strings.xml中修改了软件名称,再修改软件图标. 在Android模式下,进入Image Asset,进行图标的修改: android studio中,build->generate ...
- IdentityServer Resource Owner Password
Resource Owner Password 模式需要自己实现用户名密码的校验 新增ResourceOwnerPasswordValidator实现IResourceOwnerPasswordVal ...
- mysql 开发进阶篇系列 54 权限与安全(账号管理的各种权限操作 下)
1. 查看权限 -- 如果host值不是%, 就要加上host值,下面查看bkpuser用户权限(6个权限, 限本地连接) SHOW GRANTS FOR bkpuser@localhost; -- ...
- app 性能
Android App优化之性能分析工具 https://www.jianshu.com/p/da2a4bfcba68 -------------- 系列文: 背景:Android App优化, 要怎 ...
- ftp服务器搭建及简单操作
ftp服务器搭建及简单操作 1. 添加一个新用户,使用名useradd testftp,然后使用passwd testftp对新添加的用户设置密码(这里设置为“1234567”). 2. 安装ftp服 ...
- iOS逆向开发(3):锁定APP的目标类与函数 | reveal | lldb | debugserver | 远程调试
之前介绍了怎么获取APP的所有类的结构信息,这个有什么用呢?用处大了,比如以这一步为基础,下一步通过注入来做更多研究工作. 注入的最小单位是函数,实际上,编译执行的程序在编译后,类就不复存在了,留下来 ...
- Leetcode 1-10
这篇文章介绍Leetcode1到10题的解决思路和相关代码. 1. Two sum 问题描述:给定一个整数数组,返回两个数字的索引,使它们加起来等于一个特定的目标. 例子: Given nums = ...
- Spring-WebSocket 教程
WebSocket 教程 概述 WebSocket 是什么? WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. WebSocket 是 HTML5 开始提供的一种在单个 T ...
- 一个注意事项:内部类引用的外部变量必须是final的
之前写过一个项目,好久没更新了,最近翻起以前的代码,发现在这里报了一个错.(现在转到Intellij了,从前在Eclipse luna中是可以编译通过的,Eclipse mars也会报错,JDK版本都 ...