Kennen Sie JavaScript? Kommen Sie und probieren Sie diese 12 Interviewfragen aus!

Arbeiten Sie zusammen, um gemeinsam zu schaffen und zu wachsen! Dies ist der 21. Tag meiner Teilnahme an der „Nuggets Daily New Plan·August Update Challenge“, klicken Sie hier, um die Details der Veranstaltung anzuzeigen

JavaScript ist eine grundlegende Technologie, die jeder Front-End-Entwickler beherrschen sollte, aber in vielen Fällen verstehen Sie JavaScript möglicherweise nicht vollständig.
Es gibt zwei sehr einfache Möglichkeiten, das Können einer Person zu testen, sich den von ihr geschriebenen Code anzusehen oder sie sich den von anderen geschriebenen Code ansehen zu lassen.
Ich habe einige Code-Fragen zusammengestellt, um Ihr Verständnis von JavaScript zu testen. Sie können sie ausprobieren und sehen, ob Sie sie richtig hinbekommen. Wenn Sie alle Antworten richtig haben, kennen Sie etwas JavaScript.

erste Frage

Versuchen Sie, seine Ausgabe zu spekulieren:

const person = { name: '代码与野兽' }
Object.defineProperty(person, 'age', { value: 18 })

console.log(person.age)
console.log(Object.keys(person))
复制代码

Ausgang:

18
['name']
复制代码

Analyse:
Viele Leute neigen dazu, die zweite Ausgabe zu verwechseln, da mit defineProperty definierte Eigenschaften standardmäßig nicht aufzählbar sind.

Frage 2

Versuchen Sie, seine Ausgabe zu spekulieren:

const name = '代码与野兽'
age = 18

console.log(delete name)
console.log(delete age)
console.log(typeof age)
复制代码

Ausgang:

false
true
"undefined"
复制代码

Analyse:
Das erste False ist, weil delete nur Attribute des Objekts löschen kann, name kein Attribut ist, sodass das Löschen fehlschlägt.
Das zweite wahre ist, weil wir keine Deklaration verwenden, um eine Variable zu erstellen, wird sie als globale Variable betrachtet und auf das Fensterobjekt gemountet, was äquivalent zu delete window.age ist, sodass das Löschen erfolgreich ist.
Das dritte Undefinierte liegt daran, dass das Alter entfernt wurde.

Frage 3

Versuchen Sie, seine Ausgabe zu spekulieren:

let person = { name: '代码与野兽' }
const members = [person]
person = null
console.log(members)
复制代码

Ausgang:

[{
  name: "代码与野兽"
}]
复制代码

Analyse:
Viele Leute denken, dass die Ausgabe [ null ] sein sollte, aber wir setzen einfach einen neuen Verweis auf die Variable person, und der vorherige Verweis ist immer noch in den Mitgliedern.
Kurz gesagt, { Name: 'Code and Beast' } Dieses Objekt existiert in einem bestimmten Speicherplatz, sagen wir, seine Adresse ist X201. Seine Logik ist ungefähr wie folgt:

let person = X201
const members = [X201]
persion = null
复制代码

Frage 4

Versuchen Sie, seine Ausgabe zu spekulieren:

function SuperHero() {
  this.make = '代码与野兽'
  return { make: '野兽与代码'}
}

const mySuperhero = new SuperHero()
console.log(mySuperhero)
复制代码

Ausgang:

{
  make: "野兽与代码"
}
复制代码

Lösung:
Wenn der Konstruktor schließlich ein Objekt zurückgibt, sind die zuvor festgelegten Eigenschaften ungültig.

Frage 5

Versuchen Sie, seine Ausgabe zu spekulieren:

const name = '代码与野兽'
console.log(name.padStart(14))
console.log(name.padStart(2))
复制代码

Ausgang:

"         代码与野兽"
"代码与野兽"
复制代码

Analyse:
Die Methode padStart kann Leerzeichen am Anfang des Strings auffüllen.
Der Parameter ist die Gesamtlänge der neuen Zeichenfolge. Wenn diese Länge kürzer als die ursprüngliche Zeichenfolgenlänge ist, erfolgt kein Auffüllen.

Frage 6

Versuchen Sie, seine Ausgabe zu spekulieren:

console.log(parseInt("7"))
console.log(parseInt("7*6"))
console.log(parseInt("7Din"))
复制代码

Ausgang:

7
7
7
复制代码

Parsing:
Wenn das Argument für parseInt eine Kombination aus einer Zeichenfolge und einer Zahl ist, wird von Anfang an geprüft, bis es auf die falsche Datentypposition trifft, und wenn es sich um eine gültige Zahl vor der falschen Datentypposition handelt, wird die Zahl zurückgegeben .

Frage 7

Versuchen Sie, seine Ausgabe zu spekulieren:

[1, 2, 3, 4].reduce((x, y) => console.log(x, y))
复制代码

Ausgang:

1
2
undefined
3
undefined
4
复制代码

Erläuterung:
Wenn wir keinen Anfangswert zum Reduzieren übergeben, dann ist x der erste Wert des Arrays und y der zweite Wert des Arrays.

Frage 8

Versuchen Sie, seine Ausgabe zu spekulieren:

function getUserInfo(one, two, three) {
  console.log(one)
  console.log(two)
  console.log(three)
}

const superHero = '代码与野兽'
const age = 1000

getUserInfo`${superHero}${age} 岁`
getUserInfo`hello`
复制代码

Ausgang:

["", " 是 ", " 岁"]
"代码与野兽"
1000
["hello"]
undefined
undefined
复制代码

Parsing:
Wenn wir zum Aufrufen einer Funktion die Template-String-Syntax verwenden, ist der erste Parameter immer ein geteiltes String-Array. Die restlichen Argumente sind die Werte des Vorlagenausdrucks.

Frage 9

Versuchen Sie, seine Ausgabe zu spekulieren:

(() => {
  let x, y;
  try {
    throw new Error()
  } catch (x) {
    (x = 1), (y = 2);
    console.log(x)
  }
  console.log(x)
  console.log(y)
})()
复制代码

Ausgang:

1
undefined
2
复制代码

Analyse:
Zugriff auf x im Fang, Zugriff ist der Parameter, nicht die Variable x außerhalb.

Frage 10

Versuchen Sie, seine Ausgabe zu spekulieren:

class Clazz {}

console.log(typeof Clazz)
复制代码

Ausgang:

"function"
复制代码

Analyse:
In JavaScript ist Class auch eine Funktion.

Frage 11

Versuchen Sie, seine Ausgabe zu spekulieren:

const arr = [7, 1, 4, 3, 2];
for (const elem of arr) {
  setTimeout(() => console.log(elem), elem);
}
复制代码

Ausgang:

1
2
3
4
7
复制代码

Parsing:
nichts zu erklären...

Frage 12

Versuchen Sie, seine Ausgabe zu spekulieren:

const foo = { bar: 1 };
with(foo) {
  var bar = 2
};
console.log(foo.bar);
复制代码

Ausgang:

2
复制代码

Analyse:
Das Objekt von with wird als globales Objekt verwendet. Die Verwendung von var in with ist äquivalent zu window.[xxx]. Und dann ist foo das Fenster.

Ich denke du magst

Origin juejin.im/post/7133397098719870990
Empfohlen
Rangfolge