プログラミングライフスタイル
Javascript問題集

Javascript問題集(変数)解答

「Javascript問題集(変数)」の解答は下記になります。

問題1の解答

このコードを実行すると、

{name: 'Abigail', age:43}

という「オブジェクト」がコンソールに出力されます。

オブジェクト「human1」をスプレッド構文を使って変数「human2」に「複製」しています。「複製したオブジェクト」と「元のオブジェクト」は別々の参照先を持ちます。

問題2の解答

「変数の宣言」が「スコープの先頭」に「巻き上げられること」を「変数の巻き上げ」と呼びます。

console.log(num); // 結果は「undefined」
var num = 1;

このコードは「変数の巻き上げ」により、

var num:
console.log(num); // 結果は「undefined」
num = 1;

のように解釈されます。

変数「num」が宣言と初期化される前に利用されていますが、エラーが発生せず「変数の巻き上げ」が起こるため「undefined」が出力されます。

問題3の解答

「関数」の「引数」として「オブジェクト」を受け取るには、下記のように「オブジェクト」の「プロパティ」を引数として指定します。

let human = {
	name: "Grace",
	age: 37,
};
					  
function greet(human) {
	console.log(`Hello, ${human.name}! ${human.name} is ${human.age} years old.`);
}
					  
greet(human); // 結果:Hello, Grace! Grace is 37 years old.

問題4の解答

コードを実行すると、「ReferenceError: Cannot access 'num' before initialization」というエラーが発生します。

このコードでは、関数内で「num」を再宣言しているため、関数内のスコープで「num」が存在し、宣言前にアクセスすることができないエラーが発生します。このようなエラーは、letで宣言された「変数の巻き上げ(hoisting)」によって発生します。

問題5の解答

「オブジェクト」の「プロパティ」を動的に取得するには、ブラケットを利用する方法があります。

let car = {
	name: "wagon",
	weight: 1500,
};
  
let pName = "weight";
console.log(car[pName]); // 結果:1500

このように、変数「pName」に「プロパティ名」を代入し、「ブラケット」を利用して「オブジェクト」の「プロパティ」に変数に格納された「プロパティ名」によって「動的」にアクセスすることができます。

問題6の解答

「typeof」演算子を使用します。例えば、

console.log(typeof num);

のように記述すると、変数「num」に代入された値の「データ型」を確認することができます。

問題7の解答

「toString()」または「String()」を使用します。

let num = 1;

num.toString();

String(num);

のように利用します。

問題8の解答

コードを実行すると、

{name: 'Thomas', age: 25}

という「オブジェクト」がコンソールに出力されます。

このコードでは、オブジェクト「human1」を変数「human2」に代入しています。しかし、オブジェクトは参照値であり、変数「human2」が「human1」を参照しているため、オブジェクトの変更が「human1」にも反映されます。

問題9の解答

「=」(イコール)を使用します。

let num = 3;

のように、変数「num」に「3」という値を代入します。

問題10

「オブジェクト」の「プロパティ」にアクセスするには、ドットまたはブラケットを利用します。例えば、

let human = {
	name: "Bob",
	age: 21,
};

のようなオブジェクトの「name」という「プロパティ」にアクセスするには、下記のようにドットを利用します。

console.log(human.name);

また、下記のようにブラケットを使用することもできます。

console.log(human["age"]);

問題11の解答

「parseInt()」や「parseFloat()」などのメソッドを使用します。例えば、

let strNum = '1';

console.log(parseInt(strNum));

のように利用します。

問題12の解答

コードを実行すると、「ReferenceError: Cannot access 'num' before initialization」というエラーが発生します。

このコードでは、ブロックスコープ内で「num」を再宣言しているため、ブロックスコープ内のスコープで「num」が存在し、宣言前にアクセスすることができないためエラーが発生します。

問題13の解答

コードを実行すると、

[1, 2, 3]

という配列がコンソールに出力されます。

このコードでは、配列「num1」を変数「num2」に代入しています。しかし、その後で変数「num2」に新しい配列を代入しているため、変数「num1」には影響がありません。

問題14の解答

「テンプレート文字列」に「変数」を埋め込むには、「バッククォート」で文字列を囲み、「変数」を${}で囲んで埋め込みます。

let name = "Kein";
console.log(`Hello, ${name}!`);

このように、変数「name」を${}で囲んで「テンプレート文字列」に埋め込むことができます。

問題15の解答

「変数のスコープ」とは、「変数が参照できる範囲」のことを言います。JavaScriptでは、スコープは下記の2つに分かれます。

グローバルスコープ:「関数の外部」で宣言された「変数」は、「グローバルスコープ」となります。「グローバルスコープ変数」は、プログラム内のどこからでも利用できます。

ローカルスコープ:「関数の内部」で宣言された「変数」は、「ローカルスコープ」となります。「ローカルスコープ変数」は、その関数内でのみ利用できます。

問題16の解答

「let」または「var」を使用して、「変数」の宣言と代入を同時に行います。例えば、

let num = 1;
var numr = 2;

のようになります。このような処理を「変数の初期化」と言います。

問題17の解答

代入演算子「=」を使用します。

のように、変数「num1」に代入された値を変数「num2」に代入することができます。

問題18の解答

「半角英数字」「アンダースコア」「ドル記号」が使用できます。変数名の「最初の文字」に数字を使用することはできません。

問題19の解答

「変数」を利用する際に、「変数自身」が属するスコープで「変数」が見つからない場合は、「親のスコープ」に向かって「変数の探索」が行われる仕組みを「スコープチェーン」と言います。例えば、

のようなプログラムでは、関数「test」の内部では、「変数num」が参照されていますが、「変数num」は「関数の外部」で宣言されているため、通常は利用できません。

しかし、このようなプログラムでは、「スコープチェーン」によって「親(外部)のスコープ」に変数を探索しにいきます。

この動作のことを「スコープチェーン」と言います。

問題20の解答

「var」、「let」があります。それぞれの違いは、スコープの範囲が異なることです。

→(前へ)「JavaScript(変数)」の問題

→(次へ)「JavaScript(演算子)」の問題

HOMEへ