国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

只有 10% 的開發人員可以解決這些 JavaScript 挑戰題

開發 前端
我們已經根據這些測驗答案的統計數據發布了一篇包含最難主題的文章。為了識別這些主題,我們將所有已發布的測驗按主題進行劃分,它一共有15個主題,并計算每個主題的平均百分比。

寫在前面?

我們已經根據這些測驗答案的統計數據發布了一篇包含最難主題的文章。為了識別這些主題,我們將所有已發布的測驗按主題進行劃分,它一共有15個主題,并計算每個主題的平均百分比。

這個實驗最有趣的地方在于,除了計算正確答案之外,我們還對 Javascript 最困難的方面進行了調查,結果大相徑庭。

在調查中,大部分受訪者回答他們最困難的話題是 Promises,而據統計,Promises 僅排在第 4 位。

我們應該在每項任務旁邊留下關于正確答案百分比的注釋。你不應該將此筆記視為恒定的并且 100% 反映現實。

首先,新程序員每天都會回答我們發布的測驗并更改統計數據,文章中出現的所有數字都是在文章發表時確定的。

其次,一些答案當然是不小心猜到了,或者點錯了地方等等。不過,在采訪了大量的 JS 開發人員之后,我們可以自信地說,這個統計數據清楚地反映了現實。

那么,讓我們看看 TOP-5 最難的 JS 挑戰并進行分析,劇透:只有 8% 的響應者正確解決了 TOP-1 測驗。

Top-5、默認函數參數和函數長度屬性,18% 的人回答正確

function foo(a, b = 10, c) {
console.log(foo.length);
}


foo(1, 2, 3);

這里的關鍵點是函數的長度屬性應該提供有關函數的元數的信息,該信息是作為她的正式定義參數的數量計算的。

ES2015 中引入了默認參數功能。在此之前,所有函數參數都被視為形式參數,函數長度屬性用于返回所有函數參數編號。

隨著默認參數的引入,長度屬性的行為發生了變化。由于很明顯帶有默認值的參數是可選的,所以這樣的參數不包括在函數的長度中。

按照常識,默認值參數后面的所有參數也是可選的。因此,它們也不包含在函數的長度屬性中。

TOP-4、Object.defineProperty 方法及其默認參數,14% 的人回答正確

const obj = {};


Object.defineProperty(obj, 'myCompany', {
value: 'intspirit'
});


console.log(obj.myCompany);
delete obj.myCompany;
console.log(obj.myCompany);

大多數受訪者對此測驗的回答未定義。原因:不知道 Object.defineProperty() 方法是如何工作的。

Object.defineProperty() 方法定義對象的新屬性,或修改對象的現有屬性。

語法:

Object.defineProperty(obj, prop, descriptors)

看這里:

  • obj — 要在其上定義或修改屬性的對象。
  • prop — 要定義或修改的屬性的名稱。
  • descriptors — 屬性的描述符。

有兩種類型的描述符:數據描述符(值、可寫、可枚舉、可配置)和訪問描述符(get 和 set)。在此示例的上下文中,我們對數據描述符感興趣。

默認情況下,使用 Object.defineProperty() 添加的屬性不可寫、不可枚舉且不可配置。

可配置屬性指定是否可以從對象中刪除屬性,以及將來是否可以更改屬性描述符。如果為真,則該屬性將可用于刪除和修改其描述符,如果為假,則不可以修改。默認設置為 false。

因此,測驗的正確答案是 intspirit,刪除該屬性的嘗試將被忽略。如果你在嚴格模式下運行代碼,你會得到一個錯誤:

TypeError: Cannot delete property ‘myCompany’ of #<Object>

Top-3、Array.map & parseInt,14% 的人回答正確

const numbers = ['9', '10', '11'].map(parseInt);
console.log(numbers);

Array.map() 方法接受一個帶有 3 個參數的回調函數。我們只會對前兩個感興趣:值和索引。

parseInt 函數有 2 個參數:一個要轉換為數字的字符串和一個基數。

所以在我們的例子中, parseInt 將使用以下參數調用:?

parseInt('9', 0);
parseInt('10', 1);
parseInt('11', 2);

要了解 parseInt 如何處理這些基數,讓我們看一下 mdn 中的基數參數描述:?

radix — 2 到 36 之間的整數,表示字符串的基數(數學數字系統中的基數)。如果超出此范圍,該函數將始終返回 NaN。如果 是0 或未提供,JavaScript 假定如下:

1). 如果輸入字符串以 0x 或 0X(零,后跟小寫或大寫 X)開頭,去除了前導空格和可能的 +/- 符號,則假定基數為 16,字符串的其余部分被解析為一個十六進制數。

2). 如果輸入字符串以任何其他值開頭,則基數為 10(十進制)。

根據這個定義,我們得到以下結果:

  • parseInt('9', 0) -> radix 0 等同于沒有基數的調用。因為第一個參數不是以 0x 或 0X 開頭,所以 radix 將默認為10 -> parseInt(‘9’, 10) -> 9
  • parseInt('10', 1)-> 1 — 無效基數(超出范圍)-> NaN
  • parseInt('11', 2) -> 2 — 有效基數,二進制中的 11 是 3 -> 3

TOP-2、使用 Object.create 和 Object.assign 克隆對象。11% 的人回答正確

function User() {
this.verified = true;
}


const user = new User();
const admin = Object.create(user);


const clone1 = { ...admin };
const clone2 = Object.assign({}, admin);


console.log(admin.verified, clone1.verified, clone2.verified);

我們的頻道中有一系列測驗,專門討論 Object.assign 和 ...spread 運算符的工作差異。對于任何對深度 JS 感興趣的人,我們強烈建議你解決所有這些問題。

在每個測驗下,你都會找到關于它是如何工作的詳細說明。這只是對本示例中的代碼如何工作的簡要描述,因為事實證明它是整個測驗系列中的受訪者最困難的。

所以..讓我們了解這個例子中發生了什么。

1).將已驗證屬性設置為 true 的用戶構造函數及其實例被創建:

function User() {
this.verified = true;
}


const user = new User();

2).使用用戶對象作為原型創建管理對象。根據 mdn網站的介紹:

Object.create() 方法創建一個新對象,使用現有對象作為新創建對象的原型。

const admin = Object.create(user);

3). 創建了兩個克隆:一個使用 ...spread 運算符,另一個使用 Object.assign:

const clone1 = { ...admin };
const clone2 = Object.assign({}, admin);

你知道rest和spread算子的區別嗎?兩者都使用三個點(…),但這兩個運算符不一樣。

它們之間的主要區別在于,rest 運算符的目標是在擴展運算符將可迭代對象擴展為單個元素時,將其余一些提供的值放入一個數組中。

4).查看驗證的屬性是否被克隆:??

console.log(admin.verified, clone1.verified, clone2.verified); // true, undefined, undefined

admin 對象顯然將其驗證屬性設置為 true,因為它使用用戶作為其原型。但是,如你所見,沒有一個克隆具有經過驗證的屬性。這是因為 ...spread 運算符和 Object.assign 在克隆時都忽略了原型。

這些對象的原型:

admin.__proto__ User { verified: true },
clone1.__proto__ [Object: null prototype] {},
clone2.__proto__ [Object: null prototype] {}

克隆一個對象,包括它的原型:

const clone1 = { __proto__: Object.getPrototypeOf(obj), ...obj };
const clone2 = Object.assign(Object.create(Object.getPrototypeOf(obj)), obj);

注意:__proto__ 只是 Web 瀏覽器中的強制功能,一般 JS 引擎中沒有。

TOP-1、字符串函數和 instanceof 運算符,8%的人回答正確

var str = 'Hello';
var str2 = String('Hello');

console.log(str instanceof String);
console.log(str2 instanceof String);

這是一百多個特別挑選的非平凡任務中最困難的一個任務。只有 2 個正確答案——其中一個是頻道管理員給出的,呵呵 :)

有什么難的?

如果你查看答案的統計數據,你會發現受訪者的意見在兩個錯誤答案之間大致相等。

在本文發表時——38% 的開發人員認為這兩個表達式都會返回 true,35% 的開發人員認為只有第二個語句是true。下半場更接近了。

可以假設那些回答該表達式的人

‘Hello’ instanceof String 為false,而 String(‘Hello’) instanceof String 為true,知道 instanceof 運算符僅適用于對象,不適用于原語,但對 String 函數返回的內容感到困惑。

事實上,這兩種說法都是錯誤的。因為:

  • instanceof 運算符僅適用于對象。
  • 字符串文字“Hello”是原始的。
  • 非構造函數上下文中的字符串調用(不使用 new 關鍵字調用)返回一個原始字符串。

到這里,我就把這個5個問題分解完了,希望對你有用。

總結

關于JavaScript的挑戰學習測試題,其實有很多,我這里只是選取了一些看起來容易搞混出錯的題目,希望你能從中學習到一些新東西。

責任編輯:華軒 來源: web前端開發
相關推薦

2012-03-20 13:58:50

JavaScript

2022-04-30 17:15:45

Retool軟件工程師開發者

2021-02-16 16:44:40

RustJavaScript開發

2019-11-07 09:42:39

JavaScript框架語言

2021-11-30 17:37:14

ReactRedux

2019-07-12 13:59:21

Docker軟件技術

2015-09-21 09:34:57

2013-12-23 15:46:42

2024-11-04 14:18:32

JavaScript編程語言開發

2018-10-12 22:50:20

機器學習API人工智能

2017-10-24 11:59:41

JavaScript

2020-05-11 09:54:33

JavaScript開發技術

2025-01-16 08:44:55

2018-11-21 12:21:33

Ruby框架Web應用

2021-11-02 08:54:10

開發編程測試

2021-11-06 23:07:47

開發網站編程

2012-05-30 15:15:42

ibmdw

2023-03-15 07:12:53

企業開發人員提供商

2010-08-09 16:09:25

2022-09-12 15:51:38

JavaScrip開發編程語言
點贊
收藏

51CTO技術棧公眾號

青青青爽久久午夜综合久久午夜| 91精品国产免费久久综合| 久久精品日韩| 老司机aⅴ在线精品导航| 国产区精品视频在线观看豆花| 日韩你懂的在线播放| 日本中文字幕一区二区有码在线| 国产精品视频观看| 日本在线视频www| 激情六月婷婷久久| 色噜噜狠狠色综合网| 99精品免费网| 电影午夜精品一区二区三区| 日韩系列欧美系列| 国产精品劲爆视频| 女厕嘘嘘一区二区在线播放| 久久久久久久久网站| 免费观看成人性生生活片| 欧美精品一区二区三区蜜桃| 日本www在线观看| 欧美日韩国产中文| 中文字幕在线播放| 日韩欧美一二区| 77thz桃花论族在线观看| 欧美精品一区二区在线观看| 美女搞黄视频在线观看| 亚洲美女动态图120秒| 欧美羞羞视频| 中文字幕av一区二区三区谷原希美| 亚洲色图美国十次| 正在播放亚洲一区| av中文字幕在线播放| 欧美zozozo| free性m.freesex欧美| 欧美岛国在线观看| 欧美天堂视频| 欧美伦理91i| 国产精品三级| 国产成人免费电影| 日韩精品电影在线| 一卡二卡三卡视频| 国产精品国产馆在线真实露脸 | 国产a一区二区| 日韩一区二区久久| 亚洲图片欧洲图片日韩av| 精品一区二区免费视频| 18禁网站免费无遮挡无码中文| 日本一区二区综合亚洲| 男人本色网站| 精品视频一区二区三区免费| 性爱视频在线播放| 色播久久人人爽人人爽人人片视av| 国产日韩在线观看视频| 全球成人中文在线| 一区免费在线| 日本久久久网站| 亚洲免费观看在线观看| av播放在线观看| 一区二区欧美亚洲| 精品高清在线| 亚洲国产精品久久久久久女王| 91免费看片在线观看| 最近最新中文字幕在线| 精品一区二区三区三区| 亚欧日韩另类中文欧美| 91精品国产自产在线| 韩国成人在线视频| 黄页网址在线观看| 亚洲视频在线观看免费| 不卡一区2区| 日本在线视频www色| 亚洲资源中文字幕| 欧美男男video| 欧美一级视频免费在线观看| 久久久久国产精品午夜一区| 日本男人操女人| 欧美日韩国产一二三| 一区二区三区四区高清视频| 精品国产一二| 综合色中文字幕| 在线免费av资源| 99国产超薄丝袜足j在线观看 | 俄罗斯精品一区二区三区| www.亚洲激情.com| www日韩tube| 911国产精品| 国产成人一区在线| 91在线中文| 亚洲77777| 黄色av一区| 午夜欧美激情| 精品日韩99亚洲| 91中文字幕网| 亚洲精品720p| 日本欧美视频| 日韩免费在线观看av| 色综合久久综合网97色综合 | 欧美国产一区二区在线| 国产精品久久久久久久浪潮网站 | 免费精品视频一区二区三区| 可以在线观看的av| 欧美成人午夜激情视频| 狠狠色狠狠色综合日日tαg| 手机在线看福利| 日韩高清免费在线| 在线视频观看日韩| 丝袜足控免费网站xx网站| 日韩一区二区在线视频| 免费不卡在线观看| av大片在线观看| 国产精品久久二区| 久久精品这里都是精品| 欧美sm一区| 日韩中文一区| 欧美日韩国产综合一区二区三区| 欧美军人男男激情gay| 免费一级特黄录像| www.久久久久久.com| 激情亚洲综合在线| 麻豆av在线免费观看| 精品欧美一区二区精品久久| 亚洲电影第三页| 亚洲精品小区久久久久久| 日韩手机在线观看视频| www.国产一区| 91碰在线视频| 91麻豆精品一二三区在线| 国产精品12345| 夜夜嗨av一区二区三区免费区| 日本美女视频一区二区| 在线看福利影| 天堂精品视频| 亚洲第一精品自拍| 精品中文av资源站在线观看| dy888亚洲精品一区二区三区| 国产精品对白一区二区三区| 色综合久久综合网97色综合| 国产精品99视频| 嫩草在线播放| 久久涩涩网站| 精品国产1区2区3区| 久久se这里有精品| 精品3atv在线视频| 欧美与亚洲与日本直播| 一级黄色av| 色婷婷av一区二区三区丝袜美腿| 日韩欧美高清| 中文字幕色一区二区| 丝袜美腿一区二区三区| 99在线视频观看| 亚洲国产午夜伦理片大全在线观看网站| 欧美日韩国产小视频| 亚洲精品影视| wwww亚洲| 黄色av网址在线播放| 欧美人与性动交| 欧美激情综合五月色丁香小说| 亚洲一二三区在线观看| 电影一区二区在线观看| 国内精品400部情侣激情| 亚洲欧美日韩久久精品| 99久久99热这里只有精品| 黄色在线小视频| 亚洲人成网站在线播放2019| 日韩在线视频一区| 亚洲制服丝袜在线| 亚洲男人影院| 亚洲欧美专区| 在线影视一区| 日韩欧美国产免费播放| 亚洲欧美制服第一页| 欧美一区二区在线播放| 国产美女被下药99| 色狠狠av一区二区三区| 青青草原综合久久大伊人精品优势| 六月婷婷综合| www.精品在线| 成人精品水蜜桃| 一区二区三区在线播放欧美| 欧美日本一道| 神马午夜伦理影院| 国产精品 欧美在线| 欧美精品乱码久久久久久| 成人免费av网站| 综合久久综合| 视频欧美精品| 国产在线一二三| 国产免费成人在线| yy111111少妇影院日韩夜片| 自拍偷拍亚洲欧美| 色综合久久精品| 99久久久无码国产精品| 欧美色123| 日韩中文字幕| 青青青青在线| 欧美激情国产精品日韩| 麻豆精品传媒视频| 国产成人精品一区| 国产美女主播视频一区| 99国产**精品****|