摘要:函數的關鍵字的作用是停止執行退出函數暫停執行,等待方法調用停止執行,可自行恢復執行答案解析函數可以有很多個。簡答題說出至少個的新特性,并簡述它們的作用。簡答題答關鍵字,用于聲明只在塊級作用域起作用的變量。對象,更合理規范地處理異步操作。
通過對ES6系列文章的學習,相信大家對ES6已結有一定程度的了解。
所以本節的目的在于通過測試,便于讓大家了解在學習中的知識掌握情況,查缺補漏,一步一個腳印。
1、選擇題
1.1 下面不屬于關鍵字let的特點的是:( )
A、只在 let 命令所在的代碼塊內有效
B、會產生變量提升現象
C、同一個作用域,不能重復聲明同一個變量
D、不能在函數內部重新聲明參數
答案:B
解析:使用var關鍵字才會產生變量提升的現象。關鍵字let不會產生變量提升現象,所以必須先聲明定義后使用,否則程序拋出異常。
1.2 關于定義常量的關鍵字const,定義一個Object對象{“name”:”Jack”},再對屬性name 的值進行修改,如:obj.name = “John”。下列說法正確的:()
A、修改常量,程序跑出異常
B、程序不拋出異常,修改無效
C、修改成功,name的值為John
D、程序不拋出異常,name的值為undefined
答案:C
解析:用const來聲明一個對象類型的常量,就是傳址賦值。而不可修改的是對象在內存中的地址,而不是對象本身。所以修改name并不是修改對象的內存地址,所以可以成功修改。
1.3 在對象的解構賦值中,var {a,b,c} = { “c”:10, ”b”:9, ”a”:8 } 結果中,a、b、c的值分別是:()
A、10 9 8
B、8 9 10
C、undefined 9 undefined
D、null 9 null
答案:B
解析:對象的解構賦值不會受到屬性的排列次序影響。
1.4 關于模板字符串,下列說法不正確的是:()
A、使用反引號標識
B、插入變量的時候使用${ }
C、所有的空格和縮進都會被保留在輸出中
D、${ }中的表達式不能是函數的調用
答案:D
解析:${ }中可以放任意的JavaScript表達式,包括運算表達式、對象屬性、函數調用等。
1.5 關于字符串擴展的新函數,下面描述錯誤的是:()
A、includes函數用于判斷字符串中是否含有指定的子字符串
B、repeat函數將目標字符串重復N次,目標字符串被修改
C、startsWidth函數判斷指定的子字符串是否出現在目標字符串頭部位置
D、endWidth函數判斷指定的子字符串是否出現在目標字符串尾部位置
答案:B
解析:repeat函數將目標字符串重復N次,會返回一個新的字符串,不影響目標字符串。
1.6 數組擴展的fill( )函數,[1,2,3].fill(4)的結果是:()
A、[4]
B、[1,2,3,4]
C、[4,1,2,3]
D、[4,4,4]
答案:D
解析:fill函數的參數會把原數組的每個元素填充成指定的參數。
1.7 數組的擴展中,不屬于用于數組遍歷的函數的是:()
A、keys( )
B、entries( )
C、values( )
D、find( )
答案:D
解析:find函數用于找出數組中符合條件的第一個元素,并不是用于遍歷數組。
1.8 關于Proxy代理,下面說法錯誤的是:()
A、可以理解成在目標對象之前,架設一層“攔截”
B、Proxy的get 方法用于攔截某個屬性的讀取操作。
C、Proxy的set方法用于攔截對對象的寫操作。
D、一旦對象設置Proxy代理后不可取消,所以要謹慎操作
答案:D
解析:可以用Proxy.revocable( )來取消代理,并不是不可以取消的。
1.9 關于Set結構的實例方法,下面說法錯誤的是:()
A、set方法用于添加成員
B、clear方法用于清除所有成員。
C、entries方法返回成員的位置索引和值的遍歷器
D、values方法返回成員值的便利器
答案:C
解析:返回的是鍵名和鍵值的遍歷器;特別注意的是:set結構的鍵名和鍵值是同一個值。
1.10 下面關于類class的描述,錯誤的是:()
A、 JavaScript的類class本質上是基于原型prototype的實現方式做了進一步的封裝
B、 constructor構造方法是必須的
C、 如果類的constructor構造方法有多個,后者會覆蓋前者
D、 類的靜態方法可以通過類名調用,不需要實例化
答案:C
解析:同一個類的constructor構造方法只能有一個,否則程序會報錯。
1.11 關于Promise對象的狀態,下列說法錯誤的是:()
A、 三種狀態分別是:pending初始狀態、fulfilled成功、rejected失敗
B、 pending初始狀態可以狀變成fulfilled成功
C、 rejected失敗不可以狀變成pending初始狀態
D、 rejected失敗可以狀變成fulfilled成功
答案:D
解析:A、B、C的說法都是正確的,rejected失敗和fulfilled成功之間不能相互轉換,故D選項是錯誤的。
1.12 關于新特性Generator函數的描述,錯誤的是:()
A、Generator函數,又稱生成器函數
B、聲明Generator函數的關鍵字是:function*
C、Generator函數執行后得到的一個生成器
D、使用return語句使Generator函數暫停執行,直到next方法的調用
答案:D
解析:使函數暫停執行的關鍵字是yield,不是return;return語句是使函數停止執行并退出。
1.13 Generator函數的yield關鍵字的作用是:()
A、停止執行
B、退出函數
C、暫停執行,等待next( )方法調用
D、停止執行,可自行恢復執行
答案:C
解析:Generator函數可以有很多個yield。而return代表的是終止執行,yield代表的是暫停執行,后續通過調用生成器的next( )方法,可以恢復執行。
1.14 module模塊中,對下列語句的描述,錯誤的是:()
A、export 導出
B、import 導入
C、export default 默認導出
D、import * as 重命名
答案:D
解析:import as:星號符實現的是整體導入。而重命名的實現方式是:import { name as myname }。
1.15 在類的繼承中,關于super的說法錯誤的是:()
A、 在子類的構造函數,必須先調用super( )
B、 super相當于子類的引用
C、 先調用super( ),才可以使用this
D、 super( )相當于父類構造函數的調用
答案:B
解析:super是父類的引用,我們可以通過super來調用父類的方法和屬性。
2、簡答題
2.1 說出至少5個ES6的新特性,并簡述它們的作用。(簡答題)
答:
1、let關鍵字,用于聲明只在塊級作用域起作用的變量。 2、const關鍵字,用于聲明一個常量。 3、解構賦值,一種新的變量賦值方式。常用于交換變量值,提取函數返回值,設置默認值。 4、Symbol數據類型,定義一個獨一無二的值。 5、Proxy代理,用于編寫處理函數,來攔截目標對象的操作。 6、for...of遍歷,可遍歷具有iterator 接口的數據結構。 7、Set結構,存儲不重復的成員值的集合。 8、Map結構,鍵名可以是任何類型的鍵值對集合。 9、Promise對象,更合理、規范地處理異步操作。 10、Class類定義類和更簡便地實現類的繼承。
3、編程題
3.1 使用解構賦值,實現兩個變量的值的交換
答:
let a = 1; let b = 2; [a,b] = [b,a];
3.2 使用模板字符串改寫下面的代碼。(ES5 to ES6改寫題)
let iam = "我是"; let name = "大彬哥"; let str = "大家好,"+iam+name+",我想死你們啦。";
改成模板字符串:
let iam = `我是`; let name = `大彬哥`; let str = `大家好,${iam+name},我想死你們啦。`;
3.3 promise對象的用法,手寫一個promise
promise是一個構造函數,下面是一個簡單實例
var promise = new Promise((resolve,reject) => { if (操作成功) { resolve(value) } else { reject(error) } }) promise.then(function (value) { // success },function (value) { // failure })
3.4 閱讀下面的代碼,并用for...of改成它。(ES5 to ES6改寫題)
let arr = ["a","b","c","d","e"]; let sum = "z"; for(let i=0;i改:
let arr = ["a","b","c","d","e"]; let sum = "z"; for(value of arr){ sum += value; }4、運行分析題
4.1 分析下列程序代碼,得出運行結果,解釋其原因
const promise = new Promise((resolve, reject) => { resolve("success1") reject("error") resolve("success2") }) promise .then((res) => { console.log("then: ", res) }) .catch((err) => { console.log("catch: ", err) }) 運行結果: then:success1 原因: 構造函數中的 resolve 或 reject 只有第一次執行有效,多次調用沒有任何作用4.2 以下代碼依次輸出的內容是?
setTimeout(function () { console.log(1) }, 0); new Promise(function executor(resolve) { console.log(2); for (var i = 0; i < 10000; i++) { i == 9999 && resolve(); } console.log(3); }).then(function () { console.log(4); }); console.log(5);解析:
首先先碰到一個 setTimeout,于是會先設置一個定時,在定時結束后將傳遞這個函數放到任務隊列里面,因此開始肯定不會輸出 1 。 然后是一個 Promise,里面的函數是直接執行的,因此應該直接輸出 2 3 。 然后,Promise 的 then 應當會放到當前 tick 的最后,但是還是在當前 tick 中。 因此,應當先輸出 5,然后再輸出 4 , 最后在到下一個 tick,就是 1 。 2 3 5 4 15、總結
相信通過本次測試,大家又加深了對ES6的理解。
對沒有完全掌握的部分,接下來可以進行有針對性的訓練,那么你將在距離成為大神的道路上,又更近一步啦。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109622.html
摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
閱讀 3324·2021-11-08 13:12
閱讀 2765·2021-10-15 09:41
閱讀 1457·2021-10-08 10:05
閱讀 3303·2021-10-08 10:04
閱讀 2110·2021-09-29 09:34
閱讀 2478·2019-08-30 15:55
閱讀 2982·2019-08-30 15:45
閱讀 2589·2019-08-29 14:17