ES6 學習筆記(一)let,const和解構賦值

let和const

let和const是es6新增的兩個變量聲明關鍵字,與var的不同點在于:

(1)let和const都是塊級作用域,在{}內有效,這點在for循環中非常有用,只在循環體內有效。var為函數作用域。

(2)使用let和const聲明的變量,不存在變量提升,必須先聲明再使用。使用var聲明的變量可以先使用再定義。

(3)不可重復聲明。一旦用var,let或者const聲明過的變量,再次用let或者const聲明時會報錯,函數的參數名如果用let或者const在函數體內聲明同名的參數時,也會報錯。

const特殊要點:

(1)const顧名思義常量,但這個常量與高級語言的常量有所不同,這里的常量指的是在定義就確定其值,并且這個值只讀,不可以修改;高級語言的常量更狹隘一點;

(2)使用const聲明的變量,一旦聲明需要立即初始化,只聲明的變量無法用const,const a; 編譯會報錯;并且一旦初始化,就不能改變。

(3)const用于定義一個復合型對象或者數組時,只是對對象或者數組本身不可賦值,但依然可以為對象添加屬性或者為數組push元素。

解構賦值

解構是按照一定的模式,從數組和對象中提取值,對變量進行賦值,解構表達式的左側是一般[]或者{}。當解構表達式的左側是[]時,右側也必須是對應的具有可遍歷屬性的對象,因此可以是[],map或者string;當解構表達式的左側為{}時,javascript解析器會先將右側的值轉換為對象,然后從轉換的對象獲取對應的屬性值。總之,解構一個很重要的原則就是“模式匹配”,根據左側是[]或者{},對右側進行轉換,如果轉換后,兩側模式匹配,則進行解構賦值,否則報錯。

同時,解構時允許設置默認值,但這里的執行順序是:先解構,如果解構得到的值為非undefined,則變量值=解構的值,默認賦值表達式不執行;只有當解構得到的值嚴格等于undefined時,才會執行默認賦值表達式,否則默認賦值表達式是不執行的。

1.數組解構

數組的解構是按照變量的順序進行賦值的,因此變量的值與數組的順序息息相關,不同的順序,解構得到的值也不同。

2.對象解構

對象解構與數組解構不同,對象解構與元素的順序無關,對象解構的主要依據是對象的屬性,對象的屬性沒有次序,變量必須與屬性同名,才能取到正確的值。

3.函數參數解構

函數參數解構其實是數組解構或者對象解構的一種應用,在es6中可以為函數參數指定默認值,這點和解構一起使用,對于參數賦值非常實用。函數參數的解構同樣要求模式匹配,函數定義時的參數的數據類型和調用時傳入的參數類型保持一致。

另外:對于已經聲明的變量進行解構賦值時,要非常小心。下面的示例中,首先用let對變量進行了聲明,由于let和const聲明的變量不能重復聲明,在通過解構表達式賦值時,javascript解析器會將行首的{}解析為代碼塊,報語法錯誤。因此在行首加(),將其強制轉化為表達式執行。

4.字符串的解構賦值

字符串也可以進行解構賦值,因為字符串可以轉化為一個具有類似數組的對象。

5.數字和布爾值的解構賦值

解構賦值時,如果等號右邊是數值和布爾值,則會先轉為對象。解構賦值的規則是,只要等號右邊的值不是對象,就先將其轉為對象。由于undefined和null無法轉為對象,所以對它們進行解構賦值,都會報錯。

參考文獻:http://es6.ruanyifeng.com/#do...

     http://es6.ruanyifeng.com/#do...

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536902.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536902.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536902.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql數據庫容量和性能_新品速遞丨容量盤性能提升超 300%,數據庫支持 MySQL 8.0...

2關系型數據庫 MySQL Plus支持 MySQL 8.0 內核及 XtraBackup 物理在線遷移方式關系型數據庫服務 MySQL Plus 發布新版本 1.0.6 , 新增多項功能,提升了集群自動化運維能力。主要升級有:- 支持 MySQL 8.0 內核:根據官方測試&#xf…

10. Python面向對象

Python從設計之初就已經是一門面向對象的語言,正因為如此,在Python中創建一個類和對象是很容易的。如果接觸過java語言同學應該都知道,Java面向對象三大特征是:封裝、繼承、多態。Python面向對象也有一些特征,接下來我…

mysql聚簇索引 和主鍵的區別_[MySQL] innoDB引擎的主鍵與聚簇索引

MysqL的innodb引擎本身存儲的形式就必須是聚簇索引的形式,在磁盤上樹狀存儲的,但是不一定是根據主鍵聚簇的,有三種情形:1. 有主鍵的情況下,主鍵就是聚簇索引2. 沒有主鍵的情況下,第一個非空null的唯一索引就是聚簇索引3. 如果上面都沒有,那么就是有一個隱藏的row-id作為聚簇索引…

前端頁面:一直報Cannot set property 'height' of undefined

1、出現錯誤的例子,只拷貝了項目中關鍵出現問題的部分 例子中明明寫了styleheight:16px這個屬性,但是為什么還說height未定義呢 通過打印發現:cks.each(function () { autoTextAreaHeight($(this)); });中的$(this)取出來…

mysql表在線轉成分區表_11g普通表在線轉換分區表

本帖最后由 燈和樹 于 2016-5-4 14:58 編輯由于業務系統數據量增大,對其用戶表在線完成分區表轉換過程,記錄如下,11g數據庫支持。創建過渡分區表根據USER_ID創建分區表CREATE TABLE SDP_SMECD.TEST_T_USER_ID(USER_ID NUMBER(13) …

tiger4444/rabbit4444后綴勒索病毒怎么刪除 能否百分百恢復

上海某客戶中了tiger4444的勒索病毒,找到我們后,一天內全部恢復完成。說了很多關于勒索病毒的事情,也提醒過大家,可總是有人疏忽,致使中招后,丟錢丟面子,還丟工作。 那么要怎樣預防呢與處理呢&a…

mysql遠程一會不用卡住_連接遠程MySQL數據庫項目啟動時,不報錯但是卡住不繼續啟動的,...

連接遠程MySQL數據庫項目啟動時,不報錯但是卡住不繼續啟動的,2018-03-12 17:08:52.532DEBUG[localhost-startStop-1]o.s.beans.factory.support.DefaultListableBeanFactory.doGetBean():251 -Returning cached instance of singleton bean ‘org.spring…

GPT-5、開源、更強的ChatGPT!

年終歲尾,正值圣誕節熱鬧氣氛的OpenAI寫下了2024年的發展清單。 OpenAI聯合創始人兼首席執行官Sam Altman在社交平臺公布,AGI(稍晚一些)、GPT-5、更好的語音模型、更高的費率限制; 更好的GPTs;更好的推理…

CentOS_7 安裝MySql5.7

2019獨角獸企業重金招聘Python工程師標準>>> 下載mysql的源 wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm 安裝yum庫 yum localinstall -y mysql57-community-release-el7-7.noarch.rpm 安裝MySQL yum install -y mysql-community-…

python查詢mysql decimal報錯_python讀取MySQL數據表時,使用ast模塊轉換decimal格式數據的坑...

概述MySQL中常用的數據格式有tinyint()、int()、float()、double()、decimal() 、varchar、enum()、datetime;小數格式中decimal比較常用,因為更加精確,這里就以decimal為例。從MySQL中讀取了一行數據,內容為:(17479, datetime.da…

性能測試總結(一)---基礎理論篇(轉載)

隨著軟件行業的快速發展,現代的軟件系統越來越復雜,功能越來越多,測試人員除了需要保證基本的功能測試質量,性能也隨越來越受到人們的關注。但是一提到性能測試,很多人就直接連想到Loadrunner。認為LR就等于性能測試&a…

java listen_JavaWeb之Filter、Listener

昨天和大家介紹了一下JSON的用法,其實JSON中主要是用來和數據庫交互數據的。今天給大家講解的是Filter和Listener的用法。一、Listenner監聽器1.1、定義Javaweb中的監聽器是用于監聽web常見對象HttpServletRequest,HttpSession,ServletContext。1.2、監聽器的作用監…

BFC的概念及作用

在了解什么是BFC之前,首先得明白什么是Box , Formatting Context (一個決定如何渲染文檔的容器)的概念 Box: CSS布局的基本單位 Box是 CSS 布局的對象和基本單位, 直觀點來說, 就是一個頁面是由很多個 Box組成的&#…

bitcount java_java-Long.bitCount()如何找到設置的位數?

讓我們以255為例.我們將這些位組合在一起.首先,我們從255開始,為0b1111.1111(二進制為8 1)第一行代碼是:i i - ((i > > > 1) & 0x5555555555555555L);這條線正在梳理每對1.由于我們有8個1,所以我們希望組合成對,并得到2,2,2,2之類的東西.由于它是二進…

Luogu P2463 [SDOI2008]Sandy的卡片

題目鏈接 \(Click\) \(Here\) 真的好麻煩啊。。事實證明,理解是理解,一定要認認真真把板子打牢,不然調鍋的時候真的會很痛苦。。(最好是八分鐘能無腦把\(SA\)碼對的程度\(QAQ\)) 這個題最開始我想的是\(RMQ\)遍歷每一個…

java log輸出到文件路徑_Java - 配置log4j的日志文件路徑 (附-獲取當前類路徑的多種方法)...

1 日志路徑帶來的痛點Java 項目中少不了要和log4j等日志框架打交道, 開發環境和生產環境下日志文件的輸出路徑總是不一致, 設置為絕對路徑的方式缺少了靈活性, 每次變更項目路徑都要修改文件, 目前想到的最佳實現方式是: 根據項目位置自動加載并配置文件路徑.本文借鑒 Tomcat 的…

常用數據結構

字典:即map,映射,通過key>value的方式直接查找與之對應的值,實現一般是hash表或二叉樹跳躍表:本質是鏈表,只不過將數據進行提取分層,將總數據置為底層,提取2、4、的倍數為第一二層…

java jasypt_Jasypt

軟件簡介Jasypt這個Java類包為開發人員提供一種簡單的方式來為項目增加加密功能,包括:密碼Digest認證,文本和對象加密,集成hibernate,SpringSecurity(Acegi)來增強密碼管理。Jasypt開發團隊推出了Java加密工具Jasypt 1…

ZABBIX監控JAVA日志文件

最近開發人員有一個需求,監控java程序的報錯日志,如日志中包含“ERROR”關鍵字的信息,就郵件告警,以下是具體實現方法。 一、創建模板以上是已經創建好的模板,名為“Template App Java logs”創建應用集二、創建監控項…

如何快速把音樂轉成MP3格式

身邊有這樣一群朋友經常搞音樂,仿佛生活的樂趣只有音樂,不能也能理解,誰沒有點自己的愛好呢?但是如果想要在茫茫人海中成為佼佼者,并不是這么容易的,但是我們要在速度上贏更多的人,所以寫了這篇…