精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

7 個常見的 JavaScript 測驗及解答

開發 前端
我相信學習新事物并評估我們所知的東西對自己的進步非常有用,可以避免了我們覺得自己的知識過時的情況。在本文中,我將介紹一些常見的 JavaScript 知識。請享用!

 我相信學習新事物并評估我們所知的東西對自己的進步非常有用,可以避免了我們覺得自己的知識過時的情況。在本文中,我將介紹一些常見的 JavaScript 知識。請享用!

[[281069]]

1.聲明

查看以下代碼,并回答輸出的內容(以及原因)。

  1. // situation 1 
  2. console.log(person); 
  3. var person = 'John'
  4.  
  5. // situation 2 
  6. console.log(person); 
  7. let person = 'Phill'
  8.  
  9. // situation 3 
  10. console.log(person); 
  11. const person = 'Frank'
  12.  
  13. // situation 4 
  14. const person = 'Vanessa'
  15. console.log(person); 
  16. person = 'Mike'
  17. console.log(person); 
  18.  
  19. // situation 5 
  20. var person = 'John'
  21. let person = 'Mike'
  22. console.log(person); 
  23.  
  24. // situation 6 
  25. var person = 'John'
  26. if (person) { 
  27.   let person = 'Mike'
  28.   console.log(person); 
  29. console.log(person); 

說明

Situation 1: 預期結果是在控制臺中看到文本 John,但是令人驚訝的是,我們看到記錄了undefined。想知道為什么嗎?

好吧,這是經典的 JavaScript 在起作用。這種行為被稱為提升。在后臺,該語言將變量聲明和值分配分為兩部分。不管變量最初由開發人員在哪里聲明,變量都將移動到頂部,聲明時將其值設置為 undefined。看起來像這樣:

  1. var person; 
  2. console.log(person); 
  3. person = 'John'

Situation 2: 在這里,結果將是引用錯誤。

  1. Uncaught ReferenceError: Cannot access 'person' before initialization 

錯誤文本說明了一切。因為我們使用了關鍵字 let,所以我們的變量被提升,但沒有初始化,并且拋出該錯誤,通知我們正在嘗試訪問未初始化的變量。在 ES6 中引入了關鍵字 let,使我們能夠使用塊作用域中的變量,從而幫助我們防止意外行為。

在這里,我們會得到與 Situation 2 中相同的錯誤。

不同之處在于我們使用了關鍵字 const,從而防止在初始化后重新分配變量。 ES6 中也引入了此關鍵字。

Situation 4: 在這種情況下,我們可以看到關鍵字 const 是如何工作的,以及它如何避免無意中重新分配變量。在我們的示例中,首先會在控制臺中看到 Vanessa,然后是一個類型錯誤。

  1. Uncaught TypeError: Assignment to constant variable 

const 變量的使用隨著我們的代碼庫呈指數增長。

Situation 5: 如果已經在某個作用域內使用關鍵字 var 定義了變量,則在同一作用域中用關鍵字 let 再次聲明該變量將會引發錯誤。

因此,在我們的示例中,將不會輸出任何內容,并且會看到語法錯誤提示。

  1. Uncaught SyntaxError: Identifier 'person' has already been declared 

Situation 6: 我們分別有一個函數作用域的變量,和塊作用域的變量。在這種情況下,它們是否有相同的名字或標識符并不重要。

在控制臺中,我們應該看到 Mike 和 John 被依次輸出。為什么?

因為關鍵字 let 為我們提供了塊作用域內的變量,這意味著它們僅存在于自己創建的作用域內,在這種情況下,位于if...else 語句中。內部變量優先于外部變量,這就是為什么我們可以使用相同標識符的原因。

2.繼承

考慮以下類,并嘗試回答輸出了什么以及為什么。

  1. class Person { 
  2.   constructor() { 
  3.     this.sayHello = () => { 
  4.       return 'Hello'
  5.     } 
  6.   } 
  7.  
  8.   sayBye() { 
  9.     return 'Bye'
  10.   } 
  11.  
  12. class Student extends Person { 
  13.   sayHello() { 
  14.     return 'Hello from Student'
  15.   } 
  16.  
  17. const student = new Student(); 
  18. console.log(student.sayHello()); 

說明

如果你的答案是 Hello,那是對的!

為什么:每次我們創建一個新的 Student 實例時,都會將 sayHello 屬性設置為是一個函數,并返回字符串 Hello。這是在父類(Person)類的構造函數中發生的。

在 JavaScript 中,類是語法糖,在我們的例子中,在原型鏈上定義了 Student 類中的 sayHello 方法。考慮到每次我們創建 Student 類的實例時,都會將 sayHello 屬性設置為該實例,使其成為返回字符串 Hello 的 function,因此我們永遠不會使用原型鏈上定義的函數,也就永遠不會看到消息 Hello from Student 。

3.對象可變性

思考以下情況中每個部分的輸出:

  1. // situation 1 
  2. const user = { 
  3.   name'John'
  4.   surname: 'Doe' 
  5.  
  6. user = { 
  7.   name'Mike' 
  8.  
  9. console.log(user); 
  10.  
  11. // situation 2 
  12. const user = { 
  13.   name'John'
  14.   surname: 'Doe' 
  15.  
  16. user.name = 'Mike'
  17. console.log(user.name); 
  18.  
  19. // situation 3 
  20. const user = { 
  21.   name'John'
  22.   surname: 'Doe' 
  23.  
  24. const anotherUser = user
  25. anotherUser.name = 'Mike'
  26. console.log(user.name); 
  27.  
  28. // situation 4 
  29. const user = { 
  30.   name'John'
  31.   surname: 'Doe'
  32.   address: { 
  33.     street: 'My Street' 
  34.   } 
  35.  
  36. Object.freeze(user); 
  37.  
  38. user.name = 'Mike'
  39. user.address.street = 'My Different Street'
  40. console.log(user.name); 
  41. console.log(user.address.street); 

說明

Situation 1: 正如我們在上一節中所了解的,我們試圖重新分配不允許使用的 const 變量,所以將會得到類型錯誤。

控制臺中的結果將顯示以下文本:

  1. Uncaught TypeError: Assignment to constant variable 

Situation 2: 在這種情況下,即使我們改用關鍵字 const 聲明的變量,也會有不同的行為。不同之處在于我們正在修改對象屬性而不是其引用,這在 const 對象變量中是允許的。

控制臺中的結果應為單詞 Mike。

Situation 3: 通過將 user 分配給 anotherUser 變量,可以在它們之間共享引用或存儲位置(如果你愿意)。換句話說,它們兩個都會指向內存中的同一個對象,因所以更改一個對象的屬性將反映另一個對象的更改。

控制臺中的結果應為 Mike。

Situation 4: 在這里,我們使用 Object.freeze 方法來提供先前場景(Situation 3)所缺乏的功能。通過這個方法,我們可以“凍結”對象,從而不允許修改它的屬性值。但是有一個問題!它只會進行淺凍結,這意味著它不會保護深層屬性的更新。這就是為什么我們能夠對 street 屬性進行更改,而 name 屬性保持不變的原因。

控制臺中的輸出依次為 John 和 My Different Street 。

4.箭頭函數

運行以下代碼段后,將會輸出什么以及原因:

  1. const student = { 
  2.   school: 'My School'
  3.   fullName: 'John Doe'
  4.   printName: () => { 
  5.     console.log(this.fullName); 
  6.   }, 
  7.   printSchool: function () { 
  8.     console.log(this.school); 
  9.   } 
  10. }; 
  11.  
  12. student.printName(); 
  13. student.printSchool(); 

說明

控制臺中的輸出將依次為 undefined 和 My School。

你可能會熟悉以下語法:

  1. var me = this; 
  2. // or 
  3. var self = this; 
  4.  
  5. // ... 
  6. // ... 
  7. // somewhere deep... 
  8. // me.doSomething(); 

你可以把 me 或 self 變量視為父作用域,該作用域可用于在其中創建的每個嵌套函數。

當使用箭頭函數時,這會自動完成,我們不再需要存儲 this 引用來訪問代碼中更深的地方。箭頭函數不綁定自己,而是從父作用域繼承一個箭頭函數,這就是為什么在調用 printName 函數后輸出了 undefined 的原因。

5.解構

請查看下面的銷毀信息,并回答將要輸出的內容。給定的語法是否允許,否則會引發錯誤?

  1. const rawUser = { 
  2.    name'John'
  3.    surname: 'Doe'
  4.    email: 'john@doe.com'
  5.    displayName: 'SuperCoolJohn'
  6.    joined: '2016-05-05'
  7.    image: 'path-to-the-image'
  8.    followers: 45 
  9.  
  10. let user = {}, userDetails = {}; 
  11. ({ nameuser.name, surname: user.surname, ...userDetails } = rawUser); 
  12.  
  13. console.log(user); 
  14. console.log(userDetails);  

說明

盡管有點開箱即用,但是上面的語法是允許的,并且不會引發錯誤! 很整潔吧?

上面的語法功能強大,使我們能夠輕松地將任何對象分成兩個更具體的對象,上面的示例在控制臺的輸出為:

  1. // {name"John", surname: "Doe"
  2. // {email: "john@doe.com", displayName: "SuperCoolJohn", joined: "2016-05-05", image: "path-to-the-image", followers: 45} 

6.異步/等待

調用以下函數后將輸出什么?

  1. (async () => { 
  2.   let result = 'Some Data'
  3.  
  4.   let promise = new Promise((resolve, reject) => { 
  5.     setTimeout(() => resolve('Some data retrieved from the server'), 2000); 
  6.   }); 
  7.  
  8.   result = await promise; 
  9.   console.log(result); 
  10. })(); 

說明

如果你認為是兩秒鐘后輸出 Some data retrieved from the server ,那么你是對的!

代碼將會暫停,直到 promise 得到解決。兩秒鐘后,它將繼續執行并輸出給定的文本。這意味著 JavaScript 引擎實際上會等到異步操作完成。可以說 async/await 是用來獲得 promise 結果的語法糖。也有人認為它是比 promise.then 更具可讀性的方式。

7. Return 語句

  1. const multiplyByTwo = (x) => { 
  2.     return 
  3.     { 
  4.         result: x * 2 
  5.     }; 
  6. console.log(multiplyByTwo(2));   

說明

如果你的答案是 {result: 4},那你就錯了。輸出是 undefined。但是不要對自己太苛刻,考慮到我也寫 C# 代碼,這也曾經困擾著我,這在 C# 那兒不是個問題。

由于自動分號插入的原因,上面的代碼將返回 undefined。 return 關鍵字和表達式之間不允許使用行結束符

解決方案是用以下列方式之一去修復這個函數:

  1. const multiplyByTwo = (x) => { 
  2.     return { 
  3.         result: x * 2 
  4.     }; 

要么

  1. const multiplyByTwo = (x) => { 
  2.   return ( 
  3.     { 
  4.       result: x * 2 
  5.     } 
  6.   ); 
責任編輯:華軒 來源: segmentfault
相關推薦

2010-04-27 18:24:56

Oracle常見問題

2010-04-28 11:09:47

Oracle常見問題

2009-11-09 10:42:53

ibmdwRational

2011-06-09 16:44:28

SEO

2009-04-13 11:42:29

IBMdWRational

2009-06-14 22:28:14

ibmdwWebSphere

2009-07-29 10:03:24

思科網絡管理Cisco

2012-12-06 10:24:21

Saliency MaMATLAB

2017-12-06 08:14:25

JavaScripBUG修復

2011-05-16 10:04:38

2010-04-23 17:07:07

Aix權限

2022-08-24 14:14:58

JavaScript函數

2022-11-25 14:55:43

JavaScriptweb應用程序

2021-06-16 15:04:06

JavaScript內存開發

2021-12-30 21:51:10

JavaScript開發內存

2010-04-23 09:58:30

Oracle管理

2021-02-26 22:54:06

云計算公有云私有云

2020-08-20 10:41:28

云計算云安全數據

2011-05-10 15:30:22

SEO

2010-08-26 13:24:15

CSSmargin
點贊
收藏

51CTO技術棧公眾號

成人在线观看毛片| 91观看网站| 中文字幕求饶的少妇| 精品一区二区三区在线观看视频| 亚洲不卡一区二区三区| 日韩av在线一区二区三区| 国产三级在线观看视频| 午夜亚洲影视| 欧美精品在线网站| 成年人网站免费在线观看| 国产麻豆一区二区三区| 色综合久久天天综合网| 国产精品igao激情视频| 97人人在线| 91麻豆swag| av一区和二区| 在线观看免费中文字幕| 在线综合亚洲| 欧美肥臀大乳一区二区免费视频| 在线国产视频一区| 成人台湾亚洲精品一区二区| 欧美亚洲愉拍一区二区| 国产极品粉嫩福利姬萌白酱| 羞羞的视频在线观看| 国产精品灌醉下药二区| 日本一区二区三区在线视频| 欧美一区二区三区激情| 国产美女主播视频一区| 国产精品专区第二| 国产美女www爽爽爽| 91久久久久| 色综合久久精品亚洲国产| 日本免费www| 一区二区三区视频免费观看| 精品日韩99亚洲| 少妇愉情理伦片bd| 亚洲一区二区av| 欧美性感一区二区三区| 黑人糟蹋人妻hd中文字幕 | 美女av一区| 精品福利视频一区二区三区| 青娱乐国产精品视频| 91精品麻豆| 欧美高清性hdvideosex| www.夜夜爽| 成人在线免费电影网站| 在线看日本不卡| 北条麻妃av高潮尖叫在线观看| 中文字幕乱码中文乱码51精品| 精品国产鲁一鲁一区二区张丽| 黄色特一级视频| 羞羞的视频在线看| 一级中文字幕一区二区| 激情成人开心网| 青春草视频在线| 亚洲aaa精品| 免费av观看网址| 亚洲精品永久免费视频| 色哟哟在线观看一区二区三区| 国产xxxxx在线观看| 午夜日韩成人影院| 欧美日韩亚州综合| 午夜大片在线观看| 日韩激情综合| 日韩av影片在线观看| 9.1成人看片| 精品国产乱码久久久久久1区2匹| 在线播放国产精品| 四虎影视1304t| 欧美女人交a| 97在线免费观看| 日韩在线 中文字幕| 蜜桃在线一区二区三区| 91手机视频在线观看| 丁香六月天婷婷| 久久久精品2019中文字幕之3| 婷婷久久伊人| 在线免费观看的av| 欧美日韩综合视频| 在线黄色免费看| 国产精品白浆| 国产亚洲美女久久| 精品国产乱码久久久久久鸭王1 | 欧美高清在线精品一区| 男人天堂成人网| 激情aⅴ欧美一区二区欲海潮| 狠狠色狠色综合曰曰| 国产又大又黄又猛| 99国产精品久久一区二区三区| 日韩精品在线观看网站| 国产又色又爽又高潮免费| 伊人成人在线视频| 国产视频999| 天天干天天舔天天射| 中文字幕av不卡| 久久久久久久久久网| 久久爱.com| 精品亚洲一区二区三区在线观看 | 丰满少妇在线观看资源站| 日韩成人激情| 992tv成人免费影院| 国产精品一品二区三区的使用体验| 国产成人av电影在线播放| 欧洲一区二区日韩在线视频观看免费| www久久日com| 色综合天天综合狠狠| 久久无码人妻一区二区三区| 亚洲黄页网站| 国产69精品久久久久9| 成人黄色免费网| av资源网一区| 日本三日本三级少妇三级66| 日韩一区二区三区在线免费观看 | 人妻 丝袜美腿 中文字幕| 精品一区电影| 欧美最顶级的aⅴ艳星| 国产不卡精品视频| 欧美国产一区二区| 国产97在线 | 亚洲| 亚洲精品在线a| 在线播放精品一区二区三区| 日本少妇xxxx动漫| 国内精品伊人久久久久av一坑| 日韩久久久久久久久久久久久| 僵尸再翻生在线观看| 欧美日本韩国一区二区三区视频| 美女又爽又黄视频毛茸茸| 激情综合视频| 69174成人网| 麻豆影视国产在线观看| 欧美影视一区在线| 亚洲精品国产一区黑色丝袜| 午夜亚洲一区| 久久久婷婷一区二区三区不卡| 国产经典三级在线| 日韩欧美精品三级| 一区二区在线观看免费视频| 六月丁香综合在线视频| 日韩欧美三级电影| 中文字幕在线直播| 亚洲欧美精品一区二区| av黄色在线播放| 99久久久久久| 欧美v在线观看| 婷婷亚洲精品| 日本久久精品视频| 男人天堂网在线观看| 日韩欧美成人精品| 国产熟妇搡bbbb搡bbbb| 久久一区二区三区超碰国产精品| 久久久久欧美| 日韩一区二区三区免费| 亚洲天堂av在线播放| 日本免费在线观看视频| 久久久综合精品| 中文字幕无码不卡免费视频| 在线日韩一区| 国产精品视频大全| 午夜精品一区| 日韩美一区二区三区| 国产无码精品在线播放| 91免费观看视频| 国产成人av影视| 日韩大片在线观看| 91精品中文在线| 青青在线视频| 日韩电影在线观看中文字幕 | 亚洲国产欧美一区二区三区久久| 日韩精品在线不卡| 久久久久久久久久久久久夜| 欧美大尺度做爰床戏| 天天操综合网| 豆国产97在线| 希岛爱理一区二区三区av高清| 色综合伊人色综合网站| 亚洲av无码片一区二区三区| 婷婷中文字幕综合| 婷婷丁香综合网| 国产91综合网| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 菠萝蜜视频在线观看入口| 久久99偷拍| 国产精品美女呻吟| 日韩成人伦理| 一区二区三区国产在线观看| 亚洲第一视频在线播放| 欧美丝袜美女中出在线| 国产又色又爽又高潮免费| 成人精品免费看| 国产精品人人妻人人爽人人牛| 91精品婷婷色在线观看| 久久精品人成| 亚洲热av色在线播放| 91精品国产电影| 久热国产在线| 亚洲色图15p| 国产自产一区二区| 欧美三电影在线| 日本亚洲色大成网站www久久| 日本一区二区视频在线观看| www.四虎精品| 韩国精品免费视频| 日韩一级片播放| 在线精品亚洲| 二级片在线观看| 国产精品一在线观看| 高清国产在线一区| 亚洲一区有码| 国产97免费视| 17videosex性欧美| 欧美大胆在线视频| 日本激情视频在线观看| 亚洲欧美中文日韩在线v日本| 精品人妻伦一区二区三区久久| 欧美私人免费视频| 国产精品视频久久久久久久| 亚洲免费资源在线播放| 国产毛片欧美毛片久久久| gogo大胆日本视频一区| 国产xxx在线观看| 国产一区二区h| 97超碰人人爽| 麻豆一区二区在线| 丁香婷婷激情网| 国产精品日韩久久久| 妞干网视频在线观看| 亚洲国产精品久久久天堂| 色综合久久久久久久久五月| 国产调教一区二区三区| 九九久久99| 日韩高清三区| 久久99精品久久久久久久久久| 911精品国产| 亚洲free性xxxx护士白浆| 日本国产亚洲| 国产精品一区二区久久久久| 91大神在线观看线路一区| 日韩av片永久免费网站| 一级毛片久久久| 欧美亚洲国产视频| 国产精品av一区二区三区| 91精品国产精品| 久草免费在线视频| 国产91成人在在线播放| 欧美18av| 国产精品av网站| 992tv国产精品成人影院| 国产精品久久久久久久久| 日本国产欧美| 国产精品日日做人人爱| 成人在线免费av| 成人中文字幕+乱码+中文字幕| 精品国产不卡一区二区| 亚洲自拍小视频| 网站一区二区| 国产综合色一区二区三区| 久久中文资源| 日本一区二区三区视频在线观看| 日韩美女一区二区三区在线观看| 制服诱惑一区| 国产精品xvideos88| 欧美黑人经典片免费观看| 免费在线成人| 色免费在线视频| 国产老肥熟一区二区三区| 一级全黄裸体片| 91一区在线观看| 五月婷婷婷婷婷| 亚洲免费在线观看| 中文字幕超碰在线| 欧美午夜精品久久久久久孕妇| 亚洲综合视频在线播放| 欧美r级在线观看| 亚洲aaaaaaa| 日韩在线免费av| 色帝国亚洲欧美在线| 91成人在线观看国产| 黄页免费欧美| 国产一区精品视频| 成人中文在线| 97中文字幕在线| 老妇喷水一区二区三区| 日本在线观看视频一区| 91在线丨porny丨国产| 91狠狠综合久久久久久| 亚洲一区二区三区三| www.久久精品视频| 欧美成人video| 国产乱视频在线观看| 九九视频这里只有精品| 欧美成人a交片免费看| 91香蕉嫩草影院入口| 日韩在线影视| 美女黄色片网站| 日韩av中文在线观看| 午夜性福利视频| 国产日韩成人精品| 国产在线成人精品午夜| 欧美色综合久久| 人人妻人人澡人人爽人人欧美一区 | 欧美视频亚洲图片| 2020国产成人综合网| 农村黄色一级片| 欧美性极品少妇| 日韩大胆视频| 欧美人在线观看| julia一区二区三区中文字幕| 国产女人水真多18毛片18精品| 日韩毛片视频| 午夜免费福利在线| 91免费精品国自产拍在线不卡| 中文字幕av久久爽av| 欧美日韩1区2区| 国产一级片在线| 88国产精品欧美一区二区三区| 欧美视频三区| 中文精品一区二区三区| 日韩高清国产一区在线| 国产精品久久无码| 亚洲综合一区在线| 国产三区在线播放| 色综合伊人色综合网站| 亚洲成人短视频| 久久福利电影| 亚洲久久在线| 无码国产精品一区二区免费式直播 | 日韩高清在线电影| 国产精品无码久久久久一区二区| 亚洲国产另类av| 亚洲成人777777| 久久亚洲一区二区三区四区五区高| 奇米777日韩| 欧美性xxxx69| 三级不卡在线观看| 久久久久久九九九九九| 欧美性猛交xxxx免费看| 午夜视频在线播放| 欧美激情中文字幕乱码免费| 欧美黄视频在线观看| 日韩一级特黄毛片| 国产999精品久久| 日韩女优在线观看| 亚洲国产精品久久91精品| jizz一区二区三区| 国产欧美精品一区二区三区| 狠久久av成人天堂| 亚洲久久久久久| 粉嫩老牛aⅴ一区二区三区| 亚洲 欧美 激情 另类| 91超碰caoporn97人人| 日日狠狠久久偷偷综合色| 99精品视频播放| 国产欧美综合色| 国产精品一区二区av白丝下载| 欧美精品免费在线| 国产欧美自拍一区| 一本大道熟女人妻中文字幕在线| 91女厕偷拍女厕偷拍高清| 波多野结衣电车痴汉| 一区二区亚洲欧洲国产日韩| 亚洲精品无播放器在线播放| 日本黄xxxxxxxxx100| 成人小视频在线观看| 中文字幕一区在线播放| 中文字幕一区电影| 日韩区一区二| 鲁一鲁一鲁一鲁一色| 国产网站一区二区| 国产精品天天操| 97国产一区二区精品久久呦| 免费观看久久av| www.com黄色片| 亚洲国产美女搞黄色| 国产污视频在线| 成人免费网站在线| 亚洲精品激情| 内射毛片内射国产夫妻| 日韩一区二区三区观看| 蜜桃麻豆av在线| 亚洲人成网站在线播放2019| 国产福利一区二区三区在线视频| 欧美一区二区三区四| 中国china体内裑精亚洲片| 91成人福利| 亚洲精品视频导航| 一区av在线播放| h视频在线播放| 国产伦精品一区二区三区免 | 欧美在线看片| 在线观看av中文字幕| 欧美日韩久久一区二区| 蜜桃麻豆av在线| 日本一道在线观看| 国产亚洲一区二区三区在线观看| 国产夫妻性生活视频| 国产91精品网站| 在线欧美不卡| 亚洲精品久久久久久国| 亚洲男人天堂古典| 91九色鹿精品国产综合久久香蕉|