constとfunctionの基本的な違い
JavaScriptには、変数を宣言するためのいくつかのキーワードがあります。その中でも、const
とfunction
は特に重要です。
const
const
は、定数を宣言するためのキーワードです。一度const
で宣言された変数は、再代入することができません。つまり、一度値が設定されると、その値は変更できません。
const pi = 3.14;
pi = 3.1415; // TypeError: Assignment to constant variable.
function
一方、function
は関数を宣言するためのキーワードです。関数は、一連の手続きをまとめたもので、特定のタスクを実行したり、計算を行ったりします。
function greet() {
console.log("Hello, world!");
}
greet(); // "Hello, world!"
これらの違いを理解することで、JavaScriptのコードをより効率的に書くことができます。次のセクションでは、アロー関数と通常の関数の違いについて詳しく説明します。お楽しみに!
アロー関数と通常の関数の違い
JavaScriptには、function
キーワードを使用した通常の関数と、アロー(=>
)を使用したアロー関数の2つの主要な関数タイプがあります。これらの関数タイプは、構文とthis
の振る舞いの点で主に異なります。
通常の関数
通常の関数はfunction
キーワードを使用して宣言されます。this
の値は、関数がどのように呼び出されるかによって決まります。
function greet() {
console.log(this);
}
greet(); // Window {...} (ブラウザのグローバルオブジェクト)
アロー関数
アロー関数は、アロー(=>
)を使用して宣言されます。this
の値は、関数が定義されたスコープによって決まります。
const greet = () => {
console.log(this);
};
greet(); // {} (アロー関数が定義されたスコープのthis)
これらの違いを理解することで、JavaScriptのコードをより効率的に書くことができます。次のセクションでは、this
キーワードの挙動について詳しく説明します。お楽しみに!
thisキーワードの挙動
JavaScriptのthis
キーワードは、他の多くのプログラミング言語とは異なり、その挙動が非常に特殊です。this
の値は、関数がどのように呼び出されるかによって決まります。
通常の関数でのthis
通常の関数では、this
は関数が呼び出される際のコンテキストに依存します。つまり、関数がどのように呼び出されるかによって、this
の値が変わります。
function greet() {
console.log(this);
}
greet(); // Window {...} (ブラウザのグローバルオブジェクト)
const obj = {
greet: function() {
console.log(this);
}
};
obj.greet(); // { greet: [Function: greet] } (objオブジェクト)
アロー関数でのthis
一方、アロー関数では、this
は関数が定義された時点でのthis
の値を「記憶」します。これをレキシカルスコープと呼びます。
const obj = {
greet: () => {
console.log(this);
}
};
obj.greet(); // {} (アロー関数が定義されたスコープのthis)
これらの違いを理解することで、JavaScriptのコードをより効率的に書くことができます。次のセクションでは、const
でのオブジェクトと配列の扱いについて詳しく説明します。お楽しみに!
constでのオブジェクトと配列の扱い
JavaScriptのconst
キーワードは、一度宣言された変数に再代入することを禁止します。しかし、const
で宣言されたオブジェクトや配列のプロパティや要素は変更することができます。
オブジェクトでのconst
オブジェクトのプロパティは、そのオブジェクトがconst
で宣言されていても変更することができます。
const obj = {
name: "John"
};
obj.name = "Jane"; // これは許されます
console.log(obj.name); // "Jane"
obj = {}; // TypeError: Assignment to constant variable.
配列でのconst
同様に、配列の要素もconst
で宣言されていても変更することができます。
const arr = [1, 2, 3];
arr[0] = 4; // これは許されます
console.log(arr); // [4, 2, 3]
arr = []; // TypeError: Assignment to constant variable.
これらの違いを理解することで、JavaScriptのコードをより効率的に書くことができます。次のセクションでは、var
, let
, const
の比較について詳しく説明します。お楽しみに!
var, let, constの比較
JavaScriptには、変数を宣言するための3つのキーワード、var
、let
、const
があります。これらは、スコープ、再代入、再宣言という観点で異なります。
var
var
は、関数スコープの変数を宣言します。var
で宣言された変数は、同じスコープ内で再宣言することができます。また、var
で宣言された変数は、再代入することができます。
var x = 1;
var x; // 再宣言は許されます
x = 2; // 再代入も許されます
let
let
は、ブロックスコープの変数を宣言します。let
で宣言された変数は、同じスコープ内で再宣言することはできません。しかし、let
で宣言された変数は、再代入することができます。
let y = 1;
let y; // TypeError: Identifier 'y' has already been declared
y = 2; // 再代入は許されます
const
const
も、ブロックスコープの変数を宣言します。const
で宣言された変数は、同じスコープ内で再宣言することはできません。さらに、const
で宣言された変数は、再代入することもできません。
const z = 1;
const z; // TypeError: Identifier 'z' has already been declared
z = 2; // TypeError: Assignment to constant variable.
これらの違いを理解することで、JavaScriptのコードをより効率的に書くことができます。この記事がJavaScriptの学習に役立つことを願っています!