ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript を理解しているかどうかを確認するための、面接での 12 の質問を共有してください。

JavaScript を理解しているかどうかを確認するための、面接での 12 の質問を共有してください。

青灯夜游
青灯夜游転載
2022-09-14 19:36:441811ブラウズ

JavaScript を知っていますか?次の記事では、JavaScript の面接での 12 の質問を紹介します。これらの 12 の面接の質問を試して、すべて正しく答えられるかどうかを確認してください。

JavaScript を理解しているかどうかを確認するための、面接での 12 の質問を共有してください。

JavaScript は、すべてのフロントエンド開発者が習得すべき基本的なテクノロジですが、多くの場合、JavaScript を完全には理解していない可能性があります。

ある人の技術レベルをテストする非常に簡単な方法が 2 つあります。その人が書いたコードを確認するか、他の人が書いたコードを見てもらいます。

JavaScript の理解をテストできるコードの質問をいくつかまとめました。試してみて、すべての質問に正しく答えられるかどうかを確認してください。すべての質問に正しく答えると、JavaScript についてある程度の知識があるとみなされます。

最初の質問

出力を推測してみてください:

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

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

出力:

18
['name']

分析:
defineProperty を使用して定義されたプロパティはデフォルトでは列挙可能ではないため、多くの人は 2 番目の出力を簡単に間違えます。

2 番目の質問

出力を推測してみてください:

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

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

出力:

false
true
"undefined"

分析:
最初の false は、delete ではオブジェクトの属性のみを削除でき、name は属性ではないため、削除は失敗します。
2 番目の true は、変数の作成に宣言を使用していないためです。変数はグローバル変数とみなされ、window オブジェクトにマウントされます (delete window.age と同等であるため、削除は成功します)。
3 番目の未定義は、年齢が削除されたためです。

3 番目の質問

出力を推測してみてください:

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

出力:

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

分析:
多くの人は出力結果が [null] であるべきだと考えるでしょうが、ここでは person 変数への新しい参照を設定しただけで、以前の参照はメンバー内に残っています。
簡単に言うと、 { name: 'Code and Beast' } このオブジェクトは、アドレスが X201 であると仮定すると、特定のメモリ空間に存在します。そのロジックはおおよそ次のとおりです。

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

質問 4

その内容を推測してみてください。出力:

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

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

出力:

{
  make: "野兽与代码"
}

解析:
コンストラクターが最終的にオブジェクトを返す場合、以前に設定されたプロパティはすべて無効になります。

質問 5

出力を推測してみてください:

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

出力:

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

分析:
padStart メソッドは文字列の先頭にスペースを埋めることができます。
パラメータは新しい文字列の合計長です。この長さが元の文字列の長さより短い場合は埋められません。

質問 6

出力を推測してみてください:

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

出力:

7
7
7

分析:
parseInt のパラメータが文字列と数値の組み合わせの場合、データ型エラーの位置に到達するまで最初からチェックします。データ型エラーが数値の場合は、数値が返されます。

質問 7

出力を推測してみてください:

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

出力:

1
2
undefined
3
undefined
4

分析:
reduce に初期値を渡さない場合、x が配列の最初の値になり、y が配列の 2 番目の値になります。

質問 8

出力を推測してみてください:

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

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

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

出力:

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

分析:
テンプレート文字列構文を使用して関数を呼び出す場合、最初のパラメーターは常に分割文字列配列になります。残りのパラメータはテンプレート式の値です。

質問 9

出力を推測してみてください:

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

出力:

1
undefined
2

分析:
catch で x にアクセスすると、外部変数 x ではなくパラメーターがアクセスされます。

質問 10

出力を推測してみてください:

class Clazz {}

console.log(typeof Clazz)

出力:

"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学习教程

以上がJavaScript を理解しているかどうかを確認するための、面接での 12 の質問を共有してください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。