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,一经查实,立即删除!

相关文章

java 顺序栈_Java实现顺序栈

一、分析栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表。顺序栈是指利用顺序存储结构实现的栈&#…

Spring IO platform

什么是Spring IO PlatformSpring IO Platform,简单的可以认为是一个依赖维护平台,该平台将相关依赖汇聚到一起,针对每个依赖,都提供了一个版本号,这些版本对应的依赖都是经过测试的,可以保证一起正常使用。…

二十多岁不信,三十多岁却深信不疑的道理

1.那些年偷的懒、荒废的时间、败坏的身体,都!得!还! 年轻的时候心比天高,以为自己能干出一番大事业,后来慢慢意识到自己只是个普通人。 2.不和讲道理。 3.原来被嗤之以鼻的门当户对是有一定道理的。 4.以貌…

javascript === 和==的区别

原文链接:https://blog.csdn.net/seven_amber/article/details/62889290 -------------------------------------------------------------------- 用于比较 判断 两者相等 在比较的时候可以转自动换数据类型用于严格比较 判断两者严格相等 严格比较…

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

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

Python数据分析入门(四)

前言上期给大家分享了关于豆瓣5500部电视剧的分析,那么这次我们就给吃货们带来一些福利,此次我们的主题为“寻找最好吃的火锅”。进入主题之前,先给所有的吃货们带来一桌美味的火锅,作为各位看官的前菜。数据采集此次我们采集的是…

微信开发者工具下载

https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

java continue goto_Java中goto和break、continue实现区别

goto 关键字很早就在程序设计语言中出现。事实上,goto 是汇编语言的程序控制结构的始祖:“若条件 A,则跳到这里;否则跳到那里”。若阅读由几乎所有编译器生成的汇编代码,就会发现程序控制里包含了许多跳转。然而&#…

Linux VirtualBox安装及使用指南

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

java web vm_java web .vm文件??

在JavaWeb项目中有很多.vm文件,打开以后是类似于.NETMVC项目中的.cshtml文件的形式#if($linkList)#set($itemsOnLine0)#foreach($linkin...在Java Web项目中有很多.vm文件,打开以后是类似于.NET MVC项目中的.cshtml文件的形式#if($linkList)#set ($items…

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 内存 四_java最终化的内存保留问题(4)

四、一种代替最终化的选择在前面一节中的示例还存在一种不确定性可能:JVM并不能保证它在最终化队列中调用对象的终结器的顺序。而来自于所有类(应用程序,库,等等)的终结器都是被同等对待的。因此,一个占有大量内存或一种稀有的本地…

基于Spring Boot不同的环境使用不同的配置方法

原文路径:http://www.jb51.net/article/132589.htm ---------------------------------------- 默认是profile为dev,可以修改 spring 多文件配置: 1、properties文件 2、YAML文件 一、properties文件 在 Spring Boot 中, 多环境配…

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…

java nio 对消息分片_Java NIO:应用

Java NIO 是一种非阻塞的、面向块而非字节的 IO 方式。虽然 Java 的传统 IO 也进行了一些基于 NIO 的改造&#xff0c;NIO 仍然能够带来许多优势。面向流的 IO 方便我们一个字节一个字节地处理数据&#xff0c;有利于实现过滤等功能&#xff0c;更加优雅和简单。相应地&#xf…

使用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服务器上新增开放端口号

原文连接&#xff1a; https://blog.csdn.net/u012562106/article/details/52882666 ---------------------------------------开放端口的方法&#xff1a; 方法一&#xff1a;命令行方式 1. 开放端口命令&#xff1a; /sbin/iptables -I INPUT -p tcp --dport 8…