10 von Entwicklern häufig gestellte JavaScript-Interviewfragen (mit Antwortanalyse)

青灯夜游
Freigeben: 2021-04-26 18:53:56
nach vorne
3081 Leute haben es durchsucht

In diesem Artikel werden die 10 am häufigsten gestellten JavaScript-Interviewfragen für Anfänger vorgestellt. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für Anfänger hilfreich sein.

10 von Entwicklern häufig gestellte JavaScript-Interviewfragen (mit Antwortanalyse)

In diesem Artikel habe ich die 10 am häufigsten gestellten Fragen zu Javascript und ihre Antworten gesammelt.

Die meisten dieser 10 Fragen betreffen die Grundlagen von Javascript. Wenn Sie also gerade erst anfangen, JS zu lernen, ist es am besten, sie zu verstehen und zu beherrschen.

Diese 10 Fragen betreffenAbschlüsse,Versprechen,variable Förderung,Klassenusw. in JS. Diese sind zwar nicht sehr schwer zu erlernen, aber es ist gut, die Antworten zu kennen, da einige davon oft in Vorstellungsgesprächen gefragt werden. [Empfohlenes Lernen:Javascript-Tutorial für Fortgeschrittene]

Was ist Schließung in Javascript?

Ein Abschluss ist eine Kombination von zusammengeschlossenen Funktionen, wobei die innere Funktion Zugriff auf ihre Variablen und die Variablen der äußeren Funktion hat.

Der einfachste Weg, es zu erklären, ist das obige Beispiel:

function outer() { var name = 'Maria'; function inner() { console.log(name); } inner(); } outer(); // 'Maria'
Nach dem Login kopieren

Im obigen Code können Sie sehen, dass die Funktioninner()auf ihre übergeordnete Funktionsvariablename. Wenn daher die Funktion outer()aufgerufen wird, gibtconsole.log()der Funktioninner()nameDer Wert von Maria.inner()函数可以访问其父函数变量name。 因此,如果调用outer()函数,那么inner()函数的console.log()将返回name的值Maria

内部函数可以访问外部函数参数对象,但是内部函数参数与外部一样,则内部的参数对象会覆盖外部的参数对象。如下所示:

function outer(a, b) { const inner = (a, b) => console.log(a, b); inner(1, 2); } outer('Alice', 'Mark'); // returns 1, 2
Nach dem Login kopieren

我们使用闭包的主要原因是返回可以返回其他函数的函数。

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/awaitcallbacks

Javascript 中的原型是什么?

原型通常指的是prototype__proto__这两个原型对象,其中前者叫做显式原型对象,后者叫做隐式原型对象。

Javascript对象从原型继承方法和属性,而Object.prototype在继承链的顶部。Javascript prototype关键字还可以用于向构造函数添加新值和方法。

来看看事例:

function Animal(name, kind, age) { this.name = name; this.kind = kind; this.age = age; } Animal.prototype.ownerName('Mark');
Nach dem Login kopieren

可以看到,通过使用原型,我们能够将ownerName属性添加到Animal()构造函数中。

Javascript 的 变量提升 是什么

提升是一种机制,它将所有声明的变量和函数提升到它们局部作用域的顶部,如果变量和函数被放置在全局作用域,则会被提升到全局作用域的顶部。

Javascript中,可以在变量被使用后在声明它。

提升用于避免在变量或函数有在没有定义之前就执行导致的undefined

Interne Funktionen können auf das externe Funktionsparameterobjekt zugreifen, aber die internen Funktionsparameter sind dieselben wie die externen, sodass das interne Parameterobjekt das externe Parameterobjekt überschreibt. Es sieht so aus:
name = 'Ted'; console.log(name); var name; // 'Ted' var name; name = 'Ted'; console.log(name); // 'Ted';
Nach dem Login kopieren
Nach dem Login kopieren
Der Hauptgrund, warum wir Verschlüsse verwenden, besteht darin, Funktionen zurückzugeben, die andere Funktionen zurückgeben können. Was ist DOM in Javascript? DOM ist das Document Object Model, das eine objektorientierte Darstellung einer Website ist und mit Javascript geändert werden kann. Verwenden Sie JS, um DOM-Elemente wie Farbe, Position und Größe zu manipulieren. Um bestimmte Elemente der Seite auszuwählen, stellt Javascript einige Methoden zur Verfügung:
  • getElementById() - Wählen Sie ein Element über dasid-Attribut
  • getElementsByName( ) – Wählen Sie ein Element über das Attributnameaus
  • getElementsByTagName() – Wählen Sie alle Elemente mit dem ausgewählten Tag aus,
  • getElementsbyClassName() - Alle Elemente mit einem bestimmten Klassennamen auswählen
* querySelector() - Elemente über CSS-Selektoren auswählen. Javascript bietet auch andere Methoden zum Bearbeiten von Elementen, nicht nur zum Abrufen, wie zum Beispiel appendChild()oder innerHTML(). Was ist Promise in Javascript? Promise ist eine Lösung für die asynchrone Programmierung, die herkömmliche Lösungen ersetzen kann – Callback-Funktionen und Ereignisse. ES6 vereinheitlicht die Nutzung und stellt native Promise-Objekte bereit. Als Objekt weist Promise die folgenden zwei Merkmale auf: (1) Der Zustand des Objekts wird von der Außenwelt nicht beeinflusst.(2) Sobald sich der Status ändert, wird er sich nicht ändern, was bedeutet, dass Promiseimmer nur einen Status hat. Promise hat drei Zustände, nämlich: Ausstehend (in Bearbeitung), Gelöst (abgeschlossen), Abgelehnt (fehlgeschlagen). Promise beginnt im Status Ausstehend. Wenn es erfolgreich ist, geht es in den Erfolgsstatus über und führt die Rückruffunktion resolveaus. Wenn es fehlschlägt, wechselt es in den Fehlerstatus und wird ausgeführt ablehnenRückruffunktion. Wenn das Versprechen gelöst ist, können wir die Methode then()aufrufen und den Rückgabewert verwenden, um die Operation auszuführen. Bei Ablehnung können wir die Methode catch()verwenden, um den Fehler zu behandeln. Andere Möglichkeiten zur Handhabung der asynchronen Programmierung sind async/awaitund callbacks. Was ist der Prototyp in Javascript? Prototyp bezieht sich normalerweise auf die beiden Prototypobjekte prototypeund __proto__, wobei ersteres als explizites Prototypobjekt bezeichnet wird und das Letzteres wird als implizites Prototypobjekt bezeichnet. Javascript-Objekte erben Methoden und Eigenschaften von Prototypen, und Object.prototypesteht an der Spitze der Vererbungskette. Das Javascript-Prototyp-Schlüsselwort kann auch verwendet werden, um dem Konstruktor neue Werte und Methoden hinzuzufügen. Schauen wir uns das Beispiel an:
var student = { firstName: 'Alice', lastName: 'Jones', age: 21, sayHi: () => { return 'Hi, I am ' + this.firstName; } }
Nach dem Login kopieren
Nach dem Login kopieren
Wie Sie sehen können, können wir mithilfe des Prototyps das Attribut ownerNamezum Konstruktor Animal()hinzufügen. Was ist das Hochziehen von Variablen in Javascript?Hoistship ist ein Mechanismus, der alle deklarierten Variablen und Funktionen an die Spitze ihres lokalen Gültigkeitsbereichs hebt. Wenn die Variablen und Funktionen im globalen Gültigkeitsbereich platziert werden, werden sie in den globalen Gültigkeitsbereich verschoben an der Spitze der Weltrangliste. In Javascript können Sie eine Variable deklarieren, nachdem sie verwendet wurde. Promotion wird verwendet, um undefinierte-Fehler zu vermeiden, die durch die Ausführung von Variablen oder Funktionen vor ihrer Definition verursacht werden.
name = 'Ted'; console.log(name); var name; // 'Ted' var name; name = 'Ted'; console.log(name); // 'Ted';
Nach dem Login kopieren
Nach dem Login kopieren

使用var声明的变量,如果没有赋值,则默认会被初始化为undefined,letconst则不会。另外,需要注意的是,在声明const时,必须同时初始化它,因为后面不可在更改它。

Javascript中的对象是什么

对象只是一种特殊的数据。对象拥有属性和方法。JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等。

对象的属性:反映该对象某些特定的性质的,如:字符串的长度、图像的长宽等;

对象的方法:能够在对象上执行的动作。例如,表单的“提交”(Submit),时间的“获取”(getYear)等;

属性只是简单的值,而方法是可以在对象上执行的操作。

var student = { firstName: 'Alice', lastName: 'Jones', age: 21, sayHi: () => { return 'Hi, I am ' + this.firstName; } }
Nach dem Login kopieren
Nach dem Login kopieren

在上面的代码中,你可以看到Student对象,其中包含三个属性和一个方法。

Javascript 中的函数是什么

在javascript中函数是一段可以被执行或调用任意次数的JavasScript代码,在数据类型中属于"function"。函数也拥有属性和方法,因此函数也是对象。

在Javascript中函数定义函数声明或函数表达式由关键字function开始。在定义函数时,可以在函数名后面的括号中添加一些参数。当我们调用函数时,括号中传递的值称为参数。

function calculate(x, y) { return x * y; } calculate(2, 5);
Nach dem Login kopieren

Javascript中的纯函数是什么

如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部任何状态或数据的变化,必须只依赖于其输入参数。

顾名思义,纯函数跟我们初中数学的基本函数一样,遵循一定的映射关系,输入决定输出,一个输入只能对应一个输出。不同的输入可以有相同的输出,但是相同的输入不能有不同的输出

一个函数,如果符合以下两个特点,那么它就可以称之为 纯函数:

  • 对于相同的输入,永远得到相同的输出
  • 没有任何可观察到的副作用

Javascript中的构造函数是什么

构造函数是一种特殊的方法,用于初始化和创建 Javascript中的对象。

JavaScript 中的构造函数和其它语言中的构造函数是不同的。 通过new关键字方式调用的函数都被认为是构造函数。

在构造函数内部,this指向新创建的对象 Object。 这个新创建的对象的prototype被指向到构造函数的prototype

如果被调用的函数没有显式的return表达式,则隐式的会返回this对象,也就是新创建的对象。

const Person = (name, age) => { this.name = name; this.age = age; } var man = new Person('Mark', 23); console.log(man); // { name: 'Mark', age: 23 }
Nach dem Login kopieren

在上面的代码中,我创建了一个Person构造函数,在下面的代码中,创建了一个名为man的新变量,并基于Person构造函数创建了一个新对象。

Javascript类是什么?

自从 ES6 引入以来,我们可以在Javascript中使用类。 类是一种函数,我们使用关键字class代替function关键字来初始化它。

除此之外,我们还必须在类内部添加constructor()方法,该方法在每次初始化类时都会调用。

constructor()方法内部,我们添加了类的属性。 要基于现有的类创建另一个类,我们可以使用extends关键字。

在JavaScript中使用类的一个很好的例子是 React 框架,它是类的组件。

总结

在本文中,我收集了开发者经常问的 10 个Javascript问题,并给出答案,答案不是唯一,这里只是自己的一些见解,希望本文能给初学者带来一些帮助。

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

作者:Duomly

更多编程相关知识,请访问:编程视频!!

Das obige ist der detaillierte Inhalt von10 von Entwicklern häufig gestellte JavaScript-Interviewfragen (mit Antwortanalyse). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!