ES6部分特性小结

前言

踩着前人的肩膀,努力前行。参考了很多前人的文章。

1.变量声明const和let

es6之前声明变量只能用var,var的特点是无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部)

function test(){if(false){var name = "zhangsan";}else{console.log(name);  //此处访问值为undefined    }console.log(name);  //此处访问值为undefined
}

可以看到虽然打印结果是undefined,但是并没有报错。那是因为被js编译过结果就变成了

function test(){var name;   //这就是js的变量提升if(false){name = "zhangsan";}else{console.log(name);  //此处访问值为undefined    }console.log(name);  //此处访问值为undefined
}

再来看ES6新增的let,const。它们的作用域只在一个函数内部或者一个代码块内部。

  function test() {if(flag) {let name = 'zhangsan'} else {//此处访问会直接报错。访问不到。console.log(test)}}

const作用域和let一样。但是他通常被用于定义常量。就是它的值被设置完成后就不能再修改了。

    const name = 'lux'name = 'joe' // 再次赋值此时会报错

但是,如果 const 的是一个对象,对象所包含的值是可以被修改的。抽象一点儿说,就是对象所指向的地址不能改变,而变量成员是可以修改的。

    const student = { name: 'cc' }// 可以成功student.name = 'yy';// 如果这样子就会报错了student  = { name: 'yy' };

还有TDZ(暂时性死区)

{console.log(value) // 报错let value = 'lala'
}

我们都知道,JS引擎扫描代码时,如果发现变量声明,用 var 声明变量时会将声明提升到函数或全局作用域的顶部。但是 let 或者 const,会将声明关进一个小黑屋也是TDZ(暂时性死区),只有执行到变量声明这句语句时,变量才会从小黑屋被放出来,才能安全使用这个变量。

2.未完待续

本文基本是参考https://www.jianshu.com/p/287...。原文说的更仔细,有更多的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537999.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

authentication java_HTTP基本认证(Basic Authentication)的JAVA实例代码

大家在登录网站的时候,大部分时候是通过一个表单提交登录信息。但是有时候浏览器会弹出一个登录验证的对话框,如下图,这就是使用HTTP基本认证。下面来看看一看这个认证的工作过程:第一步:客户端发送http request 给服务器,服务器验证该用户是…

Linux VirtualBox安装及使用指南

2019独角兽企业重金招聘Python工程师标准>>> VirtualBox是一款虚拟机软件。虽然它的功能并不及VMware Workstation Pro,但它对开源精神的坚持使得它在Linux中依然深受欢迎。 唯一难以令人接受的是,VirtualBox的安装步骤较为复杂。不过&#x…

Android studio gradle 无法获取 pom文件

Android studio 3.1 导入app项目后,gradle无法获取 pom文件 具体保存内容如下: Could not GET https://dl.google.com/dl/android/maven2/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-g…

生产环境linux下安装两个及两个以上tomcat实践

前言: 在生产环境部署程序项目中,有时候由于服务器紧张或缺少服务器等原因,往往都需要安装两个及两个以上tomcat。我们需要在/etc/profile中增加tomcat的环境变量,然后在新增加的tomcat的bin目录下的catalina.sh中引用自己在/etc/profile中配置的环境变量…

java set方法赋值_java方面:private属性,没有set方法,只有get方法,如何给这个属性赋值?...

富国沪深用反射吧,然后设置setAccessible为true就可以了,如下:public class Test {private String readOnly;public String getReadOnly() {return readOnly;}public static void main(String[] args) throws SecurityException, NoSuchField…

SpringBoot项目在IntelliJ IDEA中实现热部署

spring-boot项目热部署idea工具&#xff1a; &#xff08;1&#xff09;、pom文件引入&#xff1a;都需要为true<!-- 热部署模块 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId…

使用Notepad++来比较文件

原文连接&#xff1a;https://blog.csdn.net/sanqima/article/details/50467154 -----------------------------------------------------------------------------Notepad&#xff0c;也叫npp&#xff0c;是一款类似于记事本的开源小软件。它运行便携&#xff0c;体积小、资源…

利用lamda函数 的函数式编程 实现scrapy审计外网安全问题

2019独角兽企业重金招聘Python工程师标准>>> import scrapy from scrapy.spiders import Spiderdef parse_response(response, ip_in):title response.xpath("/html/head/title").extract()[0]filename quotes.txtwith open(filename, a) as f:f.write(…

Linux 如何通过某一台服务器调用执行多台远程服务器上的脚本,结果显示在本地?...

现在都流行自动化运维了&#xff0c;可能目前技术不够&#xff0c;很多自动化工具还不怎么会用&#xff0c;所以本次只是通过ssh来实现功能。 说明&#xff1a;自己写的一个简单脚本&#xff0c;只是实现了基础功能&#xff0c;还有待优化。 一共三台机器&#xff1a; master&a…

mysql 跳表 b 树_简单谈谈Mysql索引与redis跳表

摘要面试时&#xff0c;交流有关mysql索引问题时&#xff0c;发现有些人能够涛涛不绝的说出B树和B树&#xff0c;平衡二叉树的区别&#xff0c;却说不出B树和hash索引的区别。这种一看就知道是死记硬背&#xff0c;没有理解索引的本质。本文旨在剖析这背后的原理&#xff0c;欢…

Windows配置tomcat环境

1、安装JDK 参考教程&#xff1a; https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.htmlCLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jarCLASSPATH这个环境变量一定要配好&#xff0c;否则tomcat起不来&#xff0c;直接复制上面的内容&#xff0c;…

java 抽奖 高并发处理_如何设计高并发下的抽奖?

关于抽奖,需要考虑的点有很多,这里稍微整理了下主要需要考虑以下三点:用户抽奖次数限制奖品数量限制奖品发放的分布中奖的概率的可控性用户抽象次数限制一个用户必须限制抽奖的次数,而同一个用户的并发几率其实是很小的,所以这里可以用悲观锁来控制用户的抽奖次数。奖品数量限制…

WPF圆角按钮与触发颜色变化

原文:WPF圆角按钮与触发颜色变化<Button x:Name"button1" Content"按钮1" Margin"10,10,0,0" Cursor"Pen"><Button.Template><ControlTemplate><Border CornerRadius"15,15,15,15"><Border.Back…

咖啡豆的励志故事

好多年前就听过这个故事&#xff0c;以前没感触&#xff0c;最近特有感触。

PowerDesigner V16.5 安装教程以及汉化(数据库建模)

原文地址&#xff1a;https://blog.csdn.net/tgbyn/article/details/72809116 ----------------------------------------------------------------------一、power designer是什么以及是干什么的&#xff1f; power designer是能进行数据库设计的强大的软件&#xff0c;是一款…

nginx 代理多个服务器——多个server方式

原文链接&#xff1a;https://blog.csdn.net/wild46cat/article/details/52997005 ------------------------------------------------------------- 配置文件下载地址&#xff1a;https://download.csdn.net/download/zengmingen/10462400nginx 代理多个服务器——多个server方…

SQL Server如何链接到 Oracle并查询其中的数据?并实现做接口

今天用Oracle的驱动教大家如何从SQL Server链接到Oracle. 1. 服务器上需要安装Oracle 64位的客户端或者服务端&#xff0c;安装过程就省略了。不会的同学可以网上搜索一下安装方法&#xff0c;很详细&#xff0c;这里不赘述。 安装完成后SQL Server的访问接口上会新增”OraOLE…

java spring bean配置文件_Spring基于xml文件配置Bean过程详解

这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下通过全类名来配置&#xff1a;class&#xff1a;bean的全类名&#xff0c;通过反射的方式在IOC容器中创建B…

win10升级后chrome碰到对话框就卡死

低版本的 chrome 会出现这样的问题 解决方法&#xff1a; 设置-------高级设置-----取消硬件加速

客户端SDK测试思路

本文来自网易云社区作者&#xff1a;万春艳是什么客户端SDK是为第三方开发者提供的软件开发工具包&#xff0c;包括SDK接口、开发文档和Demo示例等。SDK和应用之间是什么关系呢&#xff1f;以云信即时消息服务为例&#xff0c;如下图所示&#xff0c;应用客户端通过调用云信SDK…