日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

面試官:如何讓 var [a, b] = {a: 1, b: 2} 解構賦值成功?

來源: 責編: 時間:2024-04-23 17:59:59 218觀看
導讀最近看到了一個面試題非常有意思,講得是:如何讓 var [a, b] = {a: 1, b: 2} 解構賦值成功?。我們知道在 js 中 []代表數組,{}代表對象 。但是在這個代碼中:解構賦值語法的左側是一個數組右側則應該是一個具有迭代器接口的

最近看到了一個面試題非常有意思,講得是:如何讓 var [a, b] = {a: 1, b: 2} 解構賦值成功?。lpw28資訊網——每日最新資訊28at.com

我們知道在 js 中 []代表數組,{}代表對象 。但是在這個代碼中:lpw28資訊網——每日最新資訊28at.com

  • 解構賦值語法的左側是一個數組
  • 右側則應該是一個具有迭代器接口的對象(如數組、Map、Set等)。

因此,將對象 {a: 1, b: 2} 解構賦值給 [a, b] 會導致語法錯誤,那么怎么解決呢?我們來看一下!lpw28資訊網——每日最新資訊28at.com

思路

錯誤思路

既然將一個對象解構賦值給數組,是一個語法錯誤,那我們直接把這個解構語法變為對象的解構賦值語法不就好了。直接改成var { a, b } = { a: 1, b: 2 }; 如果這樣做的話,哈哈哈哈哈哈,恭喜你面試結束了。lpw28資訊網——每日最新資訊28at.com

所以我們得好好想清楚,這可是一個字節的面試題,它的考點可不是這么顯而易見的。lpw28資訊網——每日最新資訊28at.com

正確解題思路

我們首先來看看報錯是什么樣的:lpw28資訊網——每日最新資訊28at.com

var [a, b] = {a: 1, b: 2}TypeError: {(intermediate value)(intermediate value)} is not iterable

這個錯誤是個類型錯誤,并且是對象有問題,因為對象是一個不具備迭代器屬性的數據結構。所以我們可以知道,這個面試題就是考驗我們對于迭代器屬性的認識,我們再來個場景加深下理解。lpw28資訊網——每日最新資訊28at.com

let arr = [1, 2, 3]let obj = {    a: 1,    b: 2,    c: 3}for(let item of arr){    console.log(item)}for(let item of obj){    console.log(item)}

我們知道for of 只能遍歷具有迭代器屬性的,在遍歷數組的時候會打印出1 2 3,遍歷對象時會報這樣的一個錯誤TypeError: obj is not iterable,那么數組上的迭代器屬性究竟是什么樣的呢,我們來看一看。lpw28資訊網——每日最新資訊28at.com

lpw28資訊網——每日最新資訊28at.com

我們可以在最下面發現,數組原型上有Symbol.iterator這樣一個屬性,這個屬性顯然是從Array身上繼承到的,并且這個屬性的值是一個函數體,如果我們調用一下這個函數體會怎么樣?我們打印來看看lpw28資訊網——每日最新資訊28at.com

console.log(arr.__proto__[Symbol.iterator]());// Object [Array Iterator] {}

最重要的點來了

它返回的是一個對象類型,并且是一個迭代器對象!!!所以一個可迭代對象的基本結構是這樣的:lpw28資訊網——每日最新資訊28at.com

interable{    [Symbol.iterator]: function () {        return 迭代器 (可通過next()就能讀取到值)    }}

我們可以得出只要一個數據結構身上,具有[Symbol.iterator]這樣一個屬性,且值是一個函數體,可以返回一個迭代器的話,我們就稱這個數據結構是可迭代的。lpw28資訊網——每日最新資訊28at.com

這時候我們回到面試題之中,面試官要我們讓 var [a, b] = {a: 1, b: 2} 這個等式成立,那么有了上面的鋪墊,我們可以知道,我們接下來的操作就是:人為的為對象打造一個迭代器出來,也就是讓對象的隱式原型可以繼承到迭代器屬性,我們可以先這樣做:lpw28資訊網——每日最新資訊28at.com

Object.prototype[Symbol.iterator] = function(){}var [a, b] = {a: 1, b: 2}console.log(a,b);

這樣的話,報錯就改變了,變成:lpw28資訊網——每日最新資訊28at.com

TypeError: Result of the Symbol.iterator method is not an object

接下來,我們知道var [a, b] = [1, 2]這是肯定沒有問題的,所以我們可以將對象身上的迭代器,打造成和數組身上的迭代器(arr[Symbol.iterator])一樣,代碼如下:lpw28資訊網——每日最新資訊28at.com

Object.prototype[Symbol.iterator] = function(){    // 使用 Object.values(this) 方法獲取對象的所有值,并返回這些值的迭代器對象    return Object.values(this)[Symbol.iterator]()}

這段代碼是將 Object.prototype 上的 [Symbol.iterator] 方法重新定義為一個新的函數。新的函數通過調用 Object.values(this) 方法獲取對象的所有值,并返回這些值的迭代器對象。lpw28資訊網——每日最新資訊28at.com

通過這個代碼,我們可以使得任何 JavaScript 對象都具有了迭代能力。例如,對于一個對象 obj,我們可以直接使用 for...of 循環或者 ... 操作符來遍歷它的所有值。lpw28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-84902-0.html面試官:如何讓 var [a, b] = {a: 1, b: 2} 解構賦值成功?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Spring Boot 配置文件加載優先級詳解

下一篇: 一文讀懂Python數字、字符串、列表和元組是否可以作為字典的鍵

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲主播在线播放| 亚洲伦理在线观看| 久久久噜久噜久久综合| 欧美人与禽性xxxxx杂性| 久久久91精品国产| 欧美在线地址| 午夜免费在线观看精品视频| 中文在线资源观看视频网站免费不卡| 亚洲激情网站| 伊人久久男人天堂| 在线 亚洲欧美在线综合一区| 亚洲精品一线二线三线无人区| 亚洲黄色成人网| 亚洲黄色影院| 亚洲专区一区| 麻豆精品一区二区综合av| 久久一区二区视频| 久久人人爽爽爽人久久久| 欧美精品久久久久久| 欧美精品在线一区二区| 国产精品大全| 欧美国产成人在线| 另类欧美日韩国产在线| 欧美jizzhd精品欧美喷水| 欧美chengren| 国产精品久久夜| 国产婷婷97碰碰久久人人蜜臀| 国产日韩精品视频一区| 国产专区综合网| 曰本成人黄色| 亚洲日本精品国产第一区| 亚洲精品在线观看视频| 亚洲久久一区二区| 亚洲精品综合| 久久黄金**| 欧美freesex8一10精品| 欧美精品一区二区三区一线天视频 | 国产日韩精品电影| 国内精品久久久久久 | 亚洲永久精品大片| 欧美在线关看| 久久一区精品| 欧美精品一区在线发布| 欧美吻胸吃奶大尺度电影| 国产精品日韩欧美大师| 国产欧美日韩三级| 精品1区2区3区4区| 日韩视频免费观看| 亚洲欧美成人| 久久亚洲春色中文字幕久久久| 欧美性猛交xxxx乱大交退制版| 亚洲高清久久网| av成人黄色| 香蕉视频成人在线观看| 久久先锋影音| 欧美日韩伊人| 国产亚洲精久久久久久| 亚洲国产欧美日韩| 亚洲午夜日本在线观看| 欧美在线综合视频| 国产精品99免费看 | 日韩一二三区视频| 欧美99在线视频观看| 欧美日精品一区视频| 国产欧美精品日韩| 亚洲影院一区| 欧美午夜精品理论片a级大开眼界| 亚洲人成绝费网站色www| 久久亚洲图片| 国语精品一区| 欧美在线免费观看视频| 国产毛片精品视频| 亚洲欧美日韩一区| 六月天综合网| 在线观看国产一区二区| 久久久久高清| 国产精品国产三级国产专区53| 国产伊人精品| 99精品黄色片免费大全| 久久精品亚洲精品| 欧美色视频在线| av不卡免费看| 免费观看亚洲视频大全| 狠狠色噜噜狠狠色综合久| 国产精品99久久久久久久久久久久 | 99re8这里有精品热视频免费 | 日韩亚洲在线观看| 欧美精品一区二区视频| 亚洲欧洲日产国产网站| 久久激情视频| 欧美天堂亚洲电影院在线播放| 亚洲毛片在线观看.| 欧美日韩国语| 亚洲福利视频三区| 销魂美女一区二区三区视频在线| 国产精品成人va在线观看| 亚洲一区二区三区中文字幕 | 欧美日韩在线一区二区| 中文精品在线| 欧美激情一区三区| 红桃视频国产一区| 毛片av中文字幕一区二区| 亚洲国产日韩欧美综合久久 | 欧美日韩免费一区二区三区| 在线日韩精品视频| 欧美在线短视频| 国产亚洲午夜高清国产拍精品| 在线视频一区观看| 欧美1区2区3区| 亚洲日本成人女熟在线观看| 欧美日韩高清不卡| 亚洲精品综合在线| 免费不卡在线视频| 好吊视频一区二区三区四区| 欧美一区二区三区在线观看| 欧美日韩在线视频一区二区| 91久久精品国产91久久| 欧美精品一区二区三区很污很色的| 日韩一区二区免费看| 国产精品久久久久久久久久免费看| 亚洲毛片av在线| 国产精品白丝av嫩草影院| 欧美亚洲免费电影| 在线观看亚洲专区| 欧美日韩免费高清| 日韩亚洲欧美在线观看| 国产精品久久福利| 欧美一区二区精品久久911| 精品动漫一区| 久久免费观看视频| 樱花yy私人影院亚洲| 欧美美女视频| 性欧美暴力猛交另类hd| 在线国产欧美| 欧美性色综合| 久久久亚洲综合| 在线观看一区二区精品视频| 欧美日韩久久精品| 香蕉久久夜色精品国产使用方法| 国产精品理论片在线观看| 久久久久九九视频| 亚洲美女在线观看| 国产日韩在线播放| 欧美岛国激情| 9国产精品视频| 国产有码一区二区| 欧美日韩一区三区四区| 久久精品国产99国产精品| 99国产欧美久久久精品| 伊人精品久久久久7777| 欧美电影免费观看| 99在线精品观看| 国产真实乱子伦精品视频| 久久先锋资源| 亚洲一区图片| 国产一区二区中文字幕免费看| 欧美巨乳在线观看| 久久免费视频在线观看| 中文久久精品| 亚洲国产精品久久91精品| 国产日韩精品一区二区浪潮av| 久久久久久久综合色一本| 一本久道久久久| 亚洲成人在线| 欧美视频在线一区二区三区| 久久视频免费观看| 亚洲欧美日韩第一区| 韩国一区二区三区美女美女秀| 欧美日韩美女一区二区| 久热精品视频在线| 欧美一区二区三区电影在线观看| 国模私拍视频一区| 国产精品久久二区二区| 久久精品伊人| 亚洲中字在线| 一本色道久久综合狠狠躁的推荐| 国产精品香蕉在线观看| 久久久久一区二区三区| 亚洲欧美精品在线观看| 亚洲乱码日产精品bd| 亚洲国产精品一区二区www在线| 国产亚洲激情在线| 国产精品欧美日韩| 久久最新视频| 久久高清国产| 一区二区电影免费在线观看| 亚洲国产经典视频| 伊人精品视频| 国产综合久久久久久鬼色| 国产精品日韩精品| 欧美亚一区二区| 欧美日韩精品综合在线| 欧美黄在线观看| 欧美中文字幕视频在线观看| 亚洲午夜电影网| 亚洲电影自拍| 在线免费不卡视频| 在线观看精品一区| 国产精品资源在线观看| 欧美极品欧美精品欧美视频| 免费在线欧美视频| 美女脱光内衣内裤视频久久影院 | 欧美大片在线观看| 欧美亚洲综合网|