Maison  >  Article  >  interface Web  >  Partagez 12 questions d'entretien pour voir si vous comprenez JavaScript !

Partagez 12 questions d'entretien pour voir si vous comprenez JavaScript !

青灯夜游
青灯夜游avant
2022-09-14 19:36:441761parcourir

Connaissez-vous JavaScript ? L'article suivant partagera avec vous 12 questions d'entretien JavaScript. Essayez ces 12 questions d'entretien et voyez si vous pouvez y répondre correctement !

Partagez 12 questions d'entretien pour voir si vous comprenez JavaScript !

JavaScript est une technologie de base que tout développeur front-end devrait maîtriser, mais il arrive souvent que vous ne compreniez pas complètement JavaScript.

Il existe deux manières très simples de tester le niveau technique d'une personne, regarder le code qu'elle écrit, ou la laisser regarder le code écrit par d'autres.

J'ai résumé quelques questions de code qui peuvent tester votre compréhension de JavaScript. Vous pouvez l'essayer et voir si vous pouvez toutes répondre correctement. Si vous répondez correctement à toutes les questions, vous serez considéré comme connaissant JavaScript.

Première question

Essayez de deviner sa sortie :

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

console.log(person.age)
console.log(Object.keys(person))

Sortie :

18
['name']

Analyse :
Beaucoup de gens se trompent facilement sur la deuxième sortie, car les propriétés définies à l'aide de DefineProperty ne sont pas énumérables par défaut. Levée .

Deuxième question

Essayez de deviner sa sortie :

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

console.log(delete name)
console.log(delete age)
console.log(typeof age)

Sortie :

false
true
"undefined"

Analyse :
Le premier faux est que la suppression ne peut supprimer que les attributs de l'objet, et le nom n'est pas un attribut, donc la suppression a échoué.
La deuxième vérité est que nous n'utilisons aucune déclaration pour créer la variable. Elle sera considérée comme une variable globale et montée sur l'objet window, ce qui équivaut à delete window.age, donc la suppression est réussie.
Le troisième non défini est dû au fait que l'âge a été supprimé.

La troisième question

Essayez de deviner sa sortie :

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

Sortie :

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

Analyse :
Beaucoup de gens penseront que le résultat de sortie devrait être [null], mais nous venons de définir une personne this Une nouvelle référence à la variable, la référence précédente est toujours dans les membres.
En termes simples, { nom : 'Code and the Beast' } Cet objet existe dans un certain espace mémoire, en supposant que son adresse est X201. Sa logique ressemble à peu près à la suivante :

let person = X201
const members = [X201]
persion = null

Question 4

Essayez de deviner sa sortie :

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

const mySuperhero = new SuperHero()
console.log(mySuperhero)

Sortie :

{
  make: "野兽与代码"
}

Analyse :
Si le constructeur renvoie finalement un objet, alors tout les propriétés définies précédemment ne seront pas valides.

Question 5

Essayez de deviner sa sortie :

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

Sortie :

"         代码与野兽"
"代码与野兽"

Explication :
La méthode padStart peut remplir des espaces au début de la chaîne.
Le paramètre est la longueur totale de la nouvelle chaîne. Si cette longueur est plus courte que la longueur de la chaîne d'origine, il n'y aura pas de remplissage.

Question 6

Essayez de deviner sa sortie :

console.log(parseInt("7"))
console.log(parseInt("7*6"))
console.log(parseInt("7Din"))

Sortie :

7
7
7

Parse :
Si les paramètres de parseInt sont une combinaison de chaînes et de nombres, alors il vérifiera du début jusqu'à Lorsqu'une position d'erreur de type de données est rencontrée, s'il y a un nombre valide avant la position d'erreur de type de données, elle renverra un nombre.

Question 7

Essayez de deviner sa sortie :

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

Sortie :

1
2
undefined
3
undefined
4

Analyse :
Si on ne passe pas une valeur initiale à réduire, alors x sera la première valeur du tableau , y est la deuxième valeur du tableau.

Question 8

Essayez de deviner sa sortie :

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

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

getUserInfo`${superHero} 是 ${age} 岁`
getUserInfo`hello`

Sortie :

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

Analyse :
Lorsque nous utilisons la syntaxe de chaîne de modèle pour appeler une fonction, le premier paramètre est toujours un tableau divisé de chaînes. Les paramètres restants sont les valeurs de l'expression du modèle.

Question 9

Essayez de deviner sa sortie :

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

Sortie :

1
undefined
2

Analyse :
Lors de l'accès à x dans catch, on accède au paramètre, pas à la variable externe x.

Question 10

Essayez de deviner sa sortie :

class Clazz {}

console.log(typeof Clazz)

Sortie :

"function"

解析:
在 JavaScript 中,Class 也是 function。

第十一题

尝试推测它的输出:

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

输出:

1
2
3
4
7

解析:
没什么好解释的......

第十二题

尝试推测它的输出:

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

输出:

2

解析:

with 的对象会作为 global 对象。在 with 使用 var 等价于 window.[xxx]。而这时 foo 就是那个 window。

【相关推荐:javascript学习教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer