Heim >Web-Frontend >js-Tutorial >10 von Entwicklern häufig gestellte JavaScript-Interviewfragen (mit Antwortanalyse)
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.
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 betreffen Abschlüsse, Versprechen, variable Förderung, Klassen usw. 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]
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'
Im obigen Code können Sie sehen, dass die Funktion inner()
auf ihre übergeordnete Funktionsvariable name
zugreifen kann >. Wenn daher die Funktion outer()
aufgerufen wird, gibt console.log()
der Funktion inner()
name zurück. code >Der Wert von <code>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
我们使用闭包的主要原因是返回可以返回其他函数的函数。
DOM 是文档对象模型,它是网站的面向对象的表示形,可以使用 Javascript 进行修改。
使用 JS 可以操纵 DOM 元素,例如颜色,位置,大小。 为了选择页面的特定元素,Javascript 提供了一些方法:
id
属性选择一个元素name
属性选择一个元素* querySelector() - 通过CSS选择器选择元素。
Javascript 还提供了其他操作元素的方法,而不仅仅是获取元素,比如appendChild()
或innerHTML()
。
Promise 是异步编程的一种解决方案,可以替代传统的解决方案--回调函数和事件。ES6统一了用法,并原生提供了Promise
对象。作为对象,Promise 有一下两个特点: (1)对象的状态不受外界影响。 (2)一旦状态改变了就不会在变,也就是说任何时候 Promise
都只有一种状态。
Promise 有三种状态,分别是:Pending (进行中), Resolved (已完成), Rejected (已失败)。Promise 从 Pending
状态开始,如果成功就转到成功态,并执行resolve
回调函数;如果失败就转到失败状态并执行reject
回调函数。
如果 Promise 被解析(resolved),我们可以调用then()
方法并使用返回值执行操作。如果被拒绝(rejected),我们可以使用catch()
方法来处理错误。
处理异步编程的其他方法还有async/await
和callbacks
。
原型通常指的是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');
可以看到,通过使用原型,我们能够将ownerName
属性添加到Animal()
构造函数中。
提升是一种机制,它将所有声明的变量和函数提升到它们局部作用域的顶部,如果变量和函数被放置在全局作用域,则会被提升到全局作用域的顶部。
Javascript中,可以在变量被使用后在声明它。
提升用于避免在变量或函数有在没有定义之前就执行导致的 undefined
name = 'Ted'; console.log(name); var name; // 'Ted' var name; name = 'Ted'; console.log(name); // 'Ted';🎜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: 🎜
id
-Attributname
ausappendChild()
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 Promise
immer 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 resolve
aus. Wenn es fehlschlägt, wechselt es in den Fehlerstatus und wird ausgeführt ablehnen
Rü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/await
und callbacks
. 🎜🎜🎜Was ist der Prototyp in Javascript? 🎜🎜🎜Prototyp bezieht sich normalerweise auf die beiden Prototypobjekte prototype
und __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.prototype
steht 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; } }🎜Wie Sie sehen können, können wir mithilfe des Prototyps das Attribut
ownerName
zum 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';
使用 var
声明的变量,如果没有赋值,则默认会被初始化为 undefined
, let
和 const
则不会。另外,需要注意的是,在声明const
时,必须同时初始化它,因为后面不可在更改它。
对象只是一种特殊的数据。对象拥有属性和方法。JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等。
对象的属性:反映该对象某些特定的性质的,如:字符串的长度、图像的长宽等;
对象的方法:能够在对象上执行的动作。例如,表单的“提交”(Submit),时间的“获取”(getYear)等;
属性只是简单的值,而方法是可以在对象上执行的操作。
var student = { firstName: 'Alice', lastName: 'Jones', age: 21, sayHi: () => { return 'Hi, I am ' + this.firstName; } }
在上面的代码中,你可以看到Student
对象,其中包含三个属性和一个方法。
在javascript中函数是一段可以被执行或调用任意次数的JavasScript代码,在数据类型中属于"function"
。函数也拥有属性和方法,因此函数也是对象。
在Javascript中函数定义函数声明或函数表达式由关键字function
开始。在定义函数时,可以在函数名后面的括号中添加一些参数。当我们调用函数时,括号中传递的值称为参数。
function calculate(x, y) { return x * y; } calculate(2, 5);
如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部任何状态或数据的变化,必须只依赖于其输入参数。
顾名思义,纯函数跟我们初中数学的基本函数一样,遵循一定的映射关系,输入决定输出,一个输入只能对应一个输出。不同的输入可以有相同的输出,但是相同的输入不能有不同的输出
一个函数,如果符合以下两个特点,那么它就可以称之为 纯函数:
构造函数是一种特殊的方法,用于初始化和创建 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 }
在上面的代码中,我创建了一个Person
构造函数,在下面的代码中,创建了一个名为man
的新变量,并基于Person
构造函数创建了一个新对象。
自从 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!