深入浅出ES6之let和const命令
作者:mrr 发布时间:2024-05-22 10:37:21
标签:es6,let,const
let和const声明的变量只在代码块内有效
{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
不存在变量提升
变量一定要在声明后使用,否则报错
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
不允许重复声明
// 报错
function () {
let a = 10;
var a = 1;
}
块级作用域
function f() { console.log('I am outside!'); }
(function () {
if(false) {
// 重复声明一次函数f
function f() { console.log('I am inside!'); }
}
f();
}());
//I am inside! ES5 函数提升
//I am outside! ES6 块级作用域
const命令
声明一个只读的常量,一旦声明,常量的值就不能改变
一旦声明变量,就必须立即初始化,不能留到以后赋值
let命令、const命令、class命令声明的全局变量,不属于全局对象的属性
var a = 1;
// 如果在Node的REPL环境,可以写成global.a
// 或者采用通用方法,写成this.a
window.a // 1
let b = 1;
window.b // undefined
下面再单独给大家介绍ES6之const命令
一直以来以ecma为核心的js始终没有常量的概念,es6则弥补了这一个缺陷;
const foo='foo';
foo='bar';//TypeError: Assignment to constant variable.
上例声明了一个基本类型的常量,如过试图修改初始值则会报错;如果是引用类型的值同样适用,但是有一点需要注意,举例说明:
const foo=[];
foo=[1];//Assignment to constant variable.
正常报错,没毛病,再看:
const foo=[1,2,3];
foo[1]=4;
console.log(foo)//[1, 4, 3]
这怎么没报错?而且还能修改成功? 这两个例子不一样的地方在于前者是修改了指针(需熟悉js 引用类型)对应的内容改变了,后者则不是指向依然没变 但是指向对象的内容发生改变了,对于foo而言我只是一个指针负责指向对应的对象 至于对象内容是什么就不管我的事了所以可以修改;如果不想让内容也改变也行使用另一个方法;
const foo=Object.freeze([1,2,3]);
foo[1]=4;
console.log(foo)//[1, 2, 3]
这样就不用担心被修改了;


猜你喜欢
- 下载安装Anaconda下载地址如下,根据所需版本下载安装过程暂略(下次在安装时添加)下载安装Pycharm下载安装Pycharm,下载对应
- 沟通的时候,一般我不主动说自己是做用户体验设计,也不说做以用户为中心的设计,包括UED, UCD。这种专业名词传达的太虚,你也许是名用户体验
- 如果您是HTML的初学者,请您先自学HTML。因为DHTML是现有的HTML技术的一个综合,所以HTML语言对学习动态HTML是
- 在 MySQL 中,可以使用 REVOKE 语句删除某个用户的某些权限(此用户不会被删除),在一定程度上可以保证系统的安全性。例如,如果数据
- transforms.CenterCrop(size)将给定的PIL.Image进行中心切割,得到给定的size,size可以是tuple,
- 1、 数据库闭包表简介像MySQL这样的关系型数据库,比较适合存储一些类似表格的扁平化数据,但是遇到像树形结构这样有深度的数据,就很难驾驭了
- 本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下原图图片转换后的成果源码# -*- codi
- 比如: 搜索框:可以 <input value="搜索产品..." /> 文本区域: 可以 <text
- #第一种def delRepeat(liebiao): for x in liebiao: while li
- 介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。摘要:
- 1.Access数据库的DSN-less连接方法: set adocon=Server.Createobject(&q
- python乱序字符串排序什么是乱序字符串排序乱序字符串排序是指一个字符串是另一个字符串的乱序排序,比如apple就是eppal的乱序字符串
- web2.0教程4:如何调用css样式表 这些技巧主要讲meta标签设置的,其实与符合web标准关系不大,只要注意在最后加"/&q
- 一步步教你怎么用Python画雪人,进一步熟悉Python的基础画图操作,废话不多说,上代码。希望您给个关注给个赞,也算对我们的支持了。cl
- 在项目中遇到了个json数据需要解析,利用Python脚本尝试分享给大家如下:import osimport pandas as pdimp
- onmouseout 发现它的触发太敏感,当经过层内文字链时,即触发onmousetout事件,功能不能正常显示,经过一番搜索,整理出来,供
- 指定结果集的列名AS 子句可用来更改结果集列名或为导出列指定名称。当结果集列由对表或视图中的列的引用进行定义时,结果集列的名称与所引用列的名
- 从三个方面来说,主要有方面的措施:对象的引用计数机制、垃圾回收机制、内存池机制。一、对象的引用计数机制Python内部使用引用计数,来保持追
- 本文实例讲述了Python实现模拟登录及表单提交的方法。分享给大家供大家参考。具体实现方法如下:# -*- coding: utf-8 -*
- 本文为大家分享了mysql 8.0.20 winx64安装配置方法,记录如下。MySQL官网:链接直接点击链接也可以下载:mysql 8.0