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

回答一下這 10 個最常見的 Javascript 問題

開發 前端
在本文中,我收集了關于Javascript 最常被問到的 10 個問題及其答案。這10 個問題大多涉及 Javascript 的基礎知識,所以如果你剛剛開始學習 JS,最好理解并掌握它們并。

 為初學者介紹一下這 10 個最常被問到的 JavaScript 問題

在本文中,我收集了關于Javascript 最常被問到的 10 個問題及其答案。

這10 個問題大多涉及 Javascript 的基礎知識,所以如果你剛剛開始學習 JS,最好理解并掌握它們并。

這個 10 問題涉及 JS 中閉包、promise,變量提升、類等等。盡管這些知識不是很難,但是知道答案是一件好事,因為其中一些經常在面試中會被問到。

Javascript 中的閉包是什么?

閉包是封閉在一起的函數的組合,其中內部函數可以訪問其變量和外部函數的變量。

最簡單的解釋方法就是上例子:

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

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

內部函數可以訪問外部函數參數對象,但是內部函數參數與外部一樣,則內部的參數對象會覆蓋外部的參數對象。如下所示:

  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 

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

Javascript中的 DOM 是什么

DOM 是文檔對象模型,它是網站的面向對象的表示形,可以使用 Javascript 進行修改。

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

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

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

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

Javascript 的 Promise 是什么

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

Promise 有三種狀態,分別是:**Pending **(進行中), ** Resolved (已完成), Rejected ** (已失敗)。Promise 從 Pending 狀態開始,如果成功就轉到成功態,并執行resolve回調函數;如果失敗就轉到失敗狀態并執行reject回調函數。

如果 Promise 被解析(resolved),我們可以調用then()方法并使用返回值執行操作。如果被拒絕(rejected),我們可以使用catch()方法來處理錯誤。

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

Javascript 中的原型是什么?

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

Javascript對象從原型繼承方法和屬性,而Object.prototype在繼承鏈的頂部。Javascript prototype關鍵字還可以用于向構造函數添加新值和方法。

來看看事例:

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

可以看到,通過使用原型,我們能夠將ownerName屬性添加到Animal()構造函數中。

Javascript 的 變量提升 是什么

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

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

提升用于避免在變量或函數有在沒有定義之前就執行導致的 undefined 錯誤。

  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 聲明的變量,如果沒有賦值,則默認會被初始化為 undefined, let 和 const 則不會。另外,需要注意的是,在聲明const時,必須同時初始化它,因為后面不可在更改它。

Javascript中的對象是什么

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

對象的屬性:反映該對象某些特定的性質的,如:字符串的長度、圖像的長寬等;

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

屬性只是簡單的值,而方法是可以在對象上執行的操作。

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

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

Javascript 中的函數是什么

在javascript中函數是一段可以被執行或調用任意次數的JavasScript代碼,在數據類型中屬于"function"。函數也擁有屬性和方法,因此函數也是對象。

在Javascript中函數定義函數聲明或函數表達式由關鍵字function開始。在定義函數時,可以在函數名后面的括號中添加一些參數。當我們調用函數時,括號中傳遞的值稱為參數。

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

Javascript中的純函數是什么

如果函數的調用參數相同,則永遠返回相同的結果。它不依賴于程序執行期間函數外部任何狀態或數據的變化,必須只依賴于其輸入參數。

顧名思義,純函數跟我們初中數學的基本函數一樣,遵循一定的映射關系,輸入決定輸出,一個輸入只能對應一個輸出。不同的輸入可以有相同的輸出,但是相同的輸入不能有不同的輸出

一個函數,如果符合以下兩個特點,那么它就可以稱之為 純函數:

  • 對于相同的輸入,永遠得到相同的輸出
  • 沒有任何可觀察到的副作用

Javascript中的構造函數是什么

構造函數是一種特殊的方法,用于初始化和創建 Javascript 類中的對象。

JavaScript 中的構造函數和其它語言中的構造函數是不同的。通過 new 關鍵字方式調用的函數都被認為是構造函數。

在構造函數內部,this 指向新創建的對象 Object。這個新創建的對象的 prototype 被指向到構造函數的 prototype。

如果被調用的函數沒有顯式的 return 表達式,則隱式的會返回 this 對象,也就是新創建的對象。

  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 } 

在上面的代碼中,我創建了一個Person構造函數,在下面的代碼中,創建了一個名為man的新變量,并基于Person構造函數創建了一個新對象。

Javascript類是什么?

自從 ES6 引入以來,我們可以在Javascript中使用類。類是一種函數,我們使用關鍵字class代替function關鍵字來初始化它。

除此之外,我們還必須在類內部添加constructor()方法,該方法在每次初始化類時都會調用。

在constructor()方法內部,我們添加了類的屬性。要基于現有的類創建另一個類,我們可以使用extends關鍵字。

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

總結

在本文中,我收集了開發者經常問的 10 個Javascript問題,并給出答案,答案不是唯一,這里只是自己的一些見解,希望本文能給初始化者帶來一些幫助。

作者:Duomly 譯者:前端小智 來源:dev

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

本文轉載自微信公眾號「 大遷世界」,可以通過以下二維碼關注。轉載本文請聯系 大遷世界公眾號。

 

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2014-08-25 10:24:01

Linux

2015-11-16 09:12:40

android問題開發

2020-05-29 14:30:35

Kubernetes開發錯誤

2021-02-05 11:30:02

人工智能

2016-08-23 01:03:17

2015-11-10 12:24:36

創業問題思路

2018-08-02 15:40:59

2014-10-21 10:30:33

2017-03-01 12:45:48

Linux網卡操作系統

2018-04-02 07:21:54

2015-11-26 09:43:47

數據中心常見問題

2022-11-25 14:55:43

JavaScriptweb應用程序

2023-03-09 09:38:01

數據科學

2024-12-09 08:49:01

2018-02-06 07:56:42

JavaScript開發錯誤

2020-07-20 15:20:44

ThreadLocalJava多線程

2021-11-19 10:40:14

物聯網物聯網安全IoT

2011-05-10 15:30:22

SEO

2023-02-09 15:33:48

數據質量數據集

2023-02-02 14:28:33

數據質量數據集
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜男人天堂 | 亚洲国产精品人人爽夜夜爽 | 亚洲欧美一区二区三区国产精品 | 久久综合九九 | 成人性视频免费网站 | 国产精品91视频 | 成人午夜影院 | 久久久久久久久久久91 | h片在线看| 香蕉婷婷 | 99久久婷婷 | 欧美日韩免费一区二区三区 | 国产一二区在线 | 精品一二三区在线观看 | 欧美成人综合 | 7777在线| 可以免费观看的av | 超碰免费在线观看 | 成人激情视频免费观看 | 日本一二区视频 | 免费网站国产 | 欧美在线观看网站 | 精品无码久久久久久久动漫 | 91精品国产综合久久久久久丝袜 | 欧美在线视频一区 | 欧美性吧 | 一区二区三区高清 | 免费一级黄色录像 | 亚洲精品一区二区三区四区高清 | 欧美freesex黑人又粗又大 | 一区二区福利视频 | 成人小视频在线观看 | 亚洲成人精品 | 国产精品视频999 | 欧美老妇交乱视频 | 欧美激情在线一区二区三区 | 国产成人精品久久二区二区91 | 国产亚洲一级 | 日韩影院在线 | 91社影院在线观看 | 做a视频 |