成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

回答一下這 10 個(gè)最常見的 Javascript 問(wèn)題

開發(fā) 前端
在本文中,我收集了關(guān)于Javascript 最常被問(wèn)到的 10 個(gè)問(wèn)題及其答案。這10 個(gè)問(wèn)題大多涉及 Javascript 的基礎(chǔ)知識(shí),所以如果你剛剛開始學(xué)習(xí) JS,最好理解并掌握它們并。

 為初學(xué)者介紹一下這 10 個(gè)最常被問(wèn)到的 JavaScript 問(wèn)題

在本文中,我收集了關(guān)于Javascript 最常被問(wèn)到的 10 個(gè)問(wèn)題及其答案。

這10 個(gè)問(wèn)題大多涉及 Javascript 的基礎(chǔ)知識(shí),所以如果你剛剛開始學(xué)習(xí) JS,最好理解并掌握它們并。

這個(gè) 10 問(wèn)題涉及 JS 中閉包、promise,變量提升、類等等。盡管這些知識(shí)不是很難,但是知道答案是一件好事,因?yàn)槠渲幸恍┙?jīng)常在面試中會(huì)被問(wèn)到。

Javascript 中的閉包是什么?

閉包是封閉在一起的函數(shù)的組合,其中內(nèi)部函數(shù)可以訪問(wèn)其變量和外部函數(shù)的變量。

最簡(jiǎn)單的解釋方法就是上例子:

  1. function outer() { 
  2.   var name = 'Maria'
  3.   function inner() { 
  4.     console.log(name); 
  5.   } 
  6.   inner(); 
  7. outer(); 
  8. // 'Maria' 

在上面的代碼中,你可以看到inner()函數(shù)可以訪問(wèn)其父函數(shù)變量name。因此,如果調(diào)用outer()函數(shù),那么inner()函數(shù)的console.log()將返回name的值Maria。

內(nèi)部函數(shù)可以訪問(wèn)外部函數(shù)參數(shù)對(duì)象,但是內(nèi)部函數(shù)參數(shù)與外部一樣,則內(nèi)部的參數(shù)對(duì)象會(huì)覆蓋外部的參數(shù)對(duì)象。如下所示:

  1. function outer(a, b) { 
  2.   const inner = (a, b) => console.log(a, b); 
  3.   inner(1, 2); 
  4. outer('Alice''Mark'); 
  5. // returns 1, 2 

我們使用閉包的主要原因是返回可以返回其他函數(shù)的函數(shù)。

Javascript中的 DOM 是什么

DOM 是文檔對(duì)象模型,它是網(wǎng)站的面向?qū)ο蟮谋硎拘危梢允褂?Javascript 進(jìn)行修改。

使用 JS 可以操縱 DOM 元素,例如顏色,位置,大小。為了選擇頁(yè)面的特定元素,Javascript 提供了一些方法:

  • getElementById() - 通過(guò)id屬性選擇一個(gè)元素
  • getElementsByName() - 通過(guò)name屬性選擇一個(gè)元素
  • getElementsByTagName() - 選擇所選標(biāo)簽的所有元素,
  • getElementsbyClassName() - 選擇特定類名的所有元素

* querySelector() - 通過(guò)CSS選擇器選擇元素。

Javascript 還提供了其他操作元素的方法,而不僅僅是獲取元素,比如appendChild()或innerHTML()。

Javascript 的 Promise 是什么

Promise 是異步編程的一種解決方案,可以替代傳統(tǒng)的解決方案--回調(diào)函數(shù)和事件。ES6統(tǒng)一了用法,并原生提供了Promise對(duì)象。作為對(duì)象,Promise 有一下兩個(gè)特點(diǎn):* (1)對(duì)象的狀態(tài)不受外界影響。* (2)一旦狀態(tài)改變了就不會(huì)在變,也就是說(shuō)任何時(shí)候 Promise 都只有一種狀態(tài)。

Promise 有三種狀態(tài),分別是:**Pending **(進(jìn)行中), ** Resolved (已完成), Rejected ** (已失敗)。Promise 從 Pending 狀態(tài)開始,如果成功就轉(zhuǎn)到成功態(tài),并執(zhí)行resolve回調(diào)函數(shù);如果失敗就轉(zhuǎn)到失敗狀態(tài)并執(zhí)行reject回調(diào)函數(shù)。

如果 Promise 被解析(resolved),我們可以調(diào)用then()方法并使用返回值執(zhí)行操作。如果被拒絕(rejected),我們可以使用catch()方法來(lái)處理錯(cuò)誤。

處理異步編程的其他方法還有async/await和callbacks。

Javascript 中的原型是什么?

原型通常指的是prototype和__proto__這兩個(gè)原型對(duì)象,其中前者叫做顯式原型對(duì)象,后者叫做隱式原型對(duì)象。

Javascript對(duì)象從原型繼承方法和屬性,而Object.prototype在繼承鏈的頂部。Javascript prototype關(guān)鍵字還可以用于向構(gòu)造函數(shù)添加新值和方法。

來(lái)看看事例:

  1. function Animal(name, kind, age) { 
  2.   this.name = name
  3.   this.kind = kind; 
  4.   this.age = age; 
  5.  
  6. Animal.prototype.ownerName('Mark'); 

可以看到,通過(guò)使用原型,我們能夠?qū)wnerName屬性添加到Animal()構(gòu)造函數(shù)中。

Javascript 的 變量提升 是什么

提升是一種機(jī)制,它將所有聲明的變量和函數(shù)提升到它們局部作用域的頂部,如果變量和函數(shù)被放置在全局作用域,則會(huì)被提升到全局作用域的頂部。

Javascript中,可以在變量被使用后在聲明它。

提升用于避免在變量或函數(shù)有在沒有定義之前就執(zhí)行導(dǎo)致的 undefined 錯(cuò)誤。

  1. name = 'Ted'
  2. console.log(name); 
  3. var name
  4. // 'Ted' 
  5.  
  6.  
  7. var name
  8. name = 'Ted'
  9. console.log(name); 
  10. // 'Ted'

使用 var 聲明的變量,如果沒有賦值,則默認(rèn)會(huì)被初始化為 undefined, let 和 const 則不會(huì)。另外,需要注意的是,在聲明const時(shí),必須同時(shí)初始化它,因?yàn)楹竺娌豢稍诟乃?/p>

Javascript中的對(duì)象是什么

對(duì)象只是一種特殊的數(shù)據(jù)。對(duì)象擁有屬性和方法。JavaScript 中的所有事物都是對(duì)象,如:字符串、數(shù)值、數(shù)組、函數(shù)等。

對(duì)象的屬性:反映該對(duì)象某些特定的性質(zhì)的,如:字符串的長(zhǎng)度、圖像的長(zhǎng)寬等;

對(duì)象的方法:能夠在對(duì)象上執(zhí)行的動(dòng)作。例如,表單的“提交”(Submit),時(shí)間的“獲取”(getYear)等;

屬性只是簡(jiǎn)單的值,而方法是可以在對(duì)象上執(zhí)行的操作。

  1. var student = { 
  2.   firstName: 'Alice'
  3.   lastName: 'Jones'
  4.   age: 21, 
  5.   sayHi: () => { 
  6.     return 'Hi, I am ' + this.firstName; 
  7.   } 

在上面的代碼中,你可以看到Student對(duì)象,其中包含三個(gè)屬性和一個(gè)方法。

Javascript 中的函數(shù)是什么

在javascript中函數(shù)是一段可以被執(zhí)行或調(diào)用任意次數(shù)的JavasScript代碼,在數(shù)據(jù)類型中屬于"function"。函數(shù)也擁有屬性和方法,因此函數(shù)也是對(duì)象。

在Javascript中函數(shù)定義函數(shù)聲明或函數(shù)表達(dá)式由關(guān)鍵字function開始。在定義函數(shù)時(shí),可以在函數(shù)名后面的括號(hào)中添加一些參數(shù)。當(dāng)我們調(diào)用函數(shù)時(shí),括號(hào)中傳遞的值稱為參數(shù)。

  1. function calculate(x, y) { 
  2.   return x * y; 
  3.  
  4. calculate(2, 5); 

Javascript中的純函數(shù)是什么

如果函數(shù)的調(diào)用參數(shù)相同,則永遠(yuǎn)返回相同的結(jié)果。它不依賴于程序執(zhí)行期間函數(shù)外部任何狀態(tài)或數(shù)據(jù)的變化,必須只依賴于其輸入?yún)?shù)。

顧名思義,純函數(shù)跟我們初中數(shù)學(xué)的基本函數(shù)一樣,遵循一定的映射關(guān)系,輸入決定輸出,一個(gè)輸入只能對(duì)應(yīng)一個(gè)輸出。不同的輸入可以有相同的輸出,但是相同的輸入不能有不同的輸出

一個(gè)函數(shù),如果符合以下兩個(gè)特點(diǎn),那么它就可以稱之為 純函數(shù):

  • 對(duì)于相同的輸入,永遠(yuǎn)得到相同的輸出
  • 沒有任何可觀察到的副作用

Javascript中的構(gòu)造函數(shù)是什么

構(gòu)造函數(shù)是一種特殊的方法,用于初始化和創(chuàng)建 Javascript 類中的對(duì)象。

JavaScript 中的構(gòu)造函數(shù)和其它語(yǔ)言中的構(gòu)造函數(shù)是不同的。通過(guò) new 關(guān)鍵字方式調(diào)用的函數(shù)都被認(rèn)為是構(gòu)造函數(shù)。

在構(gòu)造函數(shù)內(nèi)部,this 指向新創(chuàng)建的對(duì)象 Object。這個(gè)新創(chuàng)建的對(duì)象的 prototype 被指向到構(gòu)造函數(shù)的 prototype。

如果被調(diào)用的函數(shù)沒有顯式的 return 表達(dá)式,則隱式的會(huì)返回 this 對(duì)象,也就是新創(chuàng)建的對(duì)象。

  1. const Person = (name, age) => { 
  2.   this.name = name
  3.   this.age = age; 
  4.  
  5. var man = new Person('Mark', 23); 
  6. console.log(man); 
  7. // { name'Mark', age: 23 } 

在上面的代碼中,我創(chuàng)建了一個(gè)Person構(gòu)造函數(shù),在下面的代碼中,創(chuàng)建了一個(gè)名為man的新變量,并基于Person構(gòu)造函數(shù)創(chuàng)建了一個(gè)新對(duì)象。

Javascript類是什么?

自從 ES6 引入以來(lái),我們可以在Javascript中使用類。類是一種函數(shù),我們使用關(guān)鍵字class代替function關(guān)鍵字來(lái)初始化它。

除此之外,我們還必須在類內(nèi)部添加constructor()方法,該方法在每次初始化類時(shí)都會(huì)調(diào)用。

在constructor()方法內(nèi)部,我們添加了類的屬性。要基于現(xiàn)有的類創(chuàng)建另一個(gè)類,我們可以使用extends關(guān)鍵字。

在JavaScript中使用類的一個(gè)很好的例子是 React 框架,它是類的組件。

總結(jié)

在本文中,我收集了開發(fā)者經(jīng)常問(wèn)的 10 個(gè)Javascript問(wèn)題,并給出答案,答案不是唯一,這里只是自己的一些見解,希望本文能給初始化者帶來(lái)一些幫助。

作者:Duomly 譯者:前端小智 來(lái)源:dev

原文:https://dev.to/duomly/10-most-common-javascript-questions-answered-1083

本文轉(zhuǎn)載自微信公眾號(hào)「 大遷世界」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系 大遷世界公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 大遷世界
相關(guān)推薦

2014-08-25 10:24:01

Linux

2015-11-16 09:12:40

android問(wèn)題開發(fā)

2020-05-29 14:30:35

Kubernetes開發(fā)錯(cuò)誤

2021-02-05 11:30:02

人工智能

2015-11-10 12:24:36

創(chuàng)業(yè)問(wèn)題思路

2016-08-23 01:03:17

2018-08-02 15:40:59

2014-10-21 10:30:33

2017-03-01 12:45:48

Linux網(wǎng)卡操作系統(tǒng)

2018-04-02 07:21:54

2015-11-26 09:43:47

數(shù)據(jù)中心常見問(wèn)題

2022-11-25 14:55:43

JavaScriptweb應(yīng)用程序

2023-03-09 09:38:01

數(shù)據(jù)科學(xué)

2024-12-09 08:49:01

2018-02-06 07:56:42

JavaScript開發(fā)錯(cuò)誤

2021-11-19 10:40:14

物聯(lián)網(wǎng)物聯(lián)網(wǎng)安全IoT

2020-07-20 15:20:44

ThreadLocalJava多線程

2011-05-10 15:30:22

SEO

2023-02-09 15:33:48

數(shù)據(jù)質(zhì)量數(shù)據(jù)集

2023-02-02 14:28:33

數(shù)據(jù)質(zhì)量數(shù)據(jù)集
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 青青草在线视频免费观看 | 久久综合久色欧美综合狠狠 | 天天插天天操 | 亚洲伊人久久综合 | 亚洲人精品| 国产午夜高清 | 国产高清一区二区三区 | 国产精品久久久久久久久久久久冷 | 婷婷免费视频 | 精品久久久av| 欧美自拍日韩 | 91久久国产 | 另类二区 | 四虎成人精品永久免费av九九 | 亚洲国产成人精品久久久国产成人一区 | 欧美精品久久久久 | 久久久久免费观看 | 国产黄色大片在线免费观看 | av黄色在线 | 婷婷成人在线 | 91精品国产综合久久精品 | 亚洲a人 | 亚洲综合色网 | 久色网| 韩国av网站在线观看 | 神马久久久久久久久久 | 国产成人高清成人av片在线看 | 欧美日韩看片 | 亚洲天堂999 | 日韩在线 | 国产精品久久久久久久久久妞妞 | 久久久久国产 | 欧美国产日韩在线观看成人 | 日本精品一区 | 欧美一区不卡 | 日日干日日操 | 精品欧美一区二区在线观看视频 | 亚洲成人激情在线观看 | 久久久精品在线 | 欧美一级在线视频 | 日本久久久一区二区三区 |