
JavaScriptを学んでいる方にとって、テストや試験に向けて「どんな問題が出るか?」を押さえておくことはとても大切です。この記事では、**入門から応用までのレベルをカバーした「よく出る問題10選」**を、解説付きで紹介します!
Contents
1. 変数のスコープ(var, let, const)
問題:次のコードの出力結果は?
function testScope() {
if (true) {
var x = 1;
let y = 2;
const z = 3;
}
console.log(x); // ?
console.log(y); // ?
console.log(z); // ?
}
testScope();
答えと解説:
x → 1(var は関数スコープ)y → ReferenceError(let はブロックスコープ)z → ReferenceError
2. 型の違いと typeof
問題:次の各変数の型は?
typeof null // ?
typeof [] // ?
typeof {} // ?
答え:
typeof null → "object"(※JavaScriptの仕様バグ)typeof [] → "object"(配列もオブジェクト)typeof {} → "object"
3. == と === の違い
問題:次の比較結果は?
0 == false // ?
0 === false // ?
'1' == 1 // ?
'1' === 1 // ?
答え:
truefalsetruefalse
4. 関数の定義方法と違い
問題:次のうち、再代入不可なのはどれ?
const a = function() {};
const b = () => {};
function c() {}
答え:
cは関数宣言なので、再代入可能aとbはconst宣言なので、再代入不可
5. クロージャー(Closure)
問題:次のコードの出力結果は?
function outer() {
let count = 0;
return function() {
count++;
console.log(count);
};
}
const counter = outer();
counter(); // ?
counter(); // ?
答え:
12(クロージャーによりcountが保持される)
6. this の挙動
問題:次のコードで this は何を指す?
const obj = {
value: 42,
getValue: function() {
return this.value;
}
};
const get = obj.getValue;
console.log(get()); // ?
答え:
undefined(strict mode では)またはwindow.value(通常モード)thisがobjを失っているため
7. 配列操作(map, filter, reduce)
問題:次のコードの出力は?
const nums = [1, 2, 3, 4];
const result = nums.filter(n => n % 2 === 0).map(n => n * 10);
console.log(result);
答え:
[20, 40]
8. 非同期処理(Promise / async await)
問題:次の実行順序は?
console.log("1");
setTimeout(() => console.log("2"), 0);
Promise.resolve().then(() => console.log("3"));
console.log("4");
答え:
- 出力順:
1,4,3,2
9. オブジェクトのコピーと参照
問題:次のコードの出力は?
const a = { name: 'Alice' };
const b = a;
b.name = 'Bob';
console.log(a.name);
答え:
"Bob"(オブジェクトは参照渡し)
10. 配列のスプレッド構文と分割代入
問題:次のコードの出力は?
const arr = [1, 2, 3];
const [a, , b] = arr;
console.log(a, b);
答え:
1 3(2番目の要素はスキップ)
📝 おわりに
これらの問題は、初心者から中級者向けの試験や面接でも頻出です。理解しておくことで、JavaScriptの本質的な理解も深まります。
今後の勉強や就職・資格対策にもぜひお役立てください!









