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.pswp.cn/news/537999.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537999.shtml
英文地址,請注明出處:http://en.pswp.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…