TECH I.S.

JavaScript スコープ

スコープは、変数のアクセシビリティ(可視性)を決定します。

JavaScriptには3種類のスコープがあります。


  • ブロックスコープ

  • 関数スコープ

  • グローバル スコープ



ブロックスコープ

ES6(2015)より前は、JavaScript にはグローバルスコープ関数スコープしかありませんでした。

ES6では、2つの重要な新しいJavaScriptキーワードletconstが導入されました。

これらの2つのキーワードは、JavaScriptでブロックスコープを提供します。

{ }ブロック内で宣言された変数は、ブロックの外側からアクセスできません。

{   let x = 2; } // x can NOT be used here
varキーワードを使用して宣言された変数にはブロックスコープを含めることはできません。

{ }ブロック内で宣言された変数は、ブロックの外側からアクセスできます。

{   var x = 2; } // x CAN be used here

ローカルスコープ

JavaScript関数内で宣言された変数は、関数に対してローカルになります。

// code here can NOT use carName function myFunction() {   let carName = "Volvo";   // code here CAN use carName } // code here can NOT use carName

ローカル変数には関数スコープがあります。

関数内からのみアクセスできます。

ローカル変数は関数内でのみ認識されるため、同じ名前の変数を別の関数で使用できます。

ローカル変数は、関数の開始時に作成され、関数の終了時に削除されます。


関数スコープ

JavaScriptには関数スコープがあり、各関数は新しいスコープを作成します。

関数内で定義された変数は、関数の外部からアクセス(表示)できません。

varletconstで宣言された変数は関数内で宣言された場合には、非常に似ています。

それらは全て関数スコープを持っています。

function myFunction() {   let carName = "Volvo";   // Function Scope }
function myFunction() {   const carName = "Volvo";   // Function Scope }

グローバル変数

関数の外で宣言された変数は、グローバル変数になります。

let carName = "Volvo"; // code here can use carName function myFunction() { // code here can also use carName }

グローバル変数にはグローバルスコープがあります。

Webページ上のすべてのスクリプトと関数がアクセスできます。


グローバルスコープ

グローバルに(任意の関数の外で)宣言された変数にはグローバルスコープがあります。

グローバル変数には、JavaScriptプログラム内のどこからでもアクセスできます。

varletconstで宣言された変数はブロックの外で宣言された場合は非常に似ています。

それらは全てグローバルスコープを持っています。

var x = 2;       // Global scope
let x = 2;       // Global scope
const x = 2;       // Global scope

JavaScript 変数

JavaScriptでは、オブジェクトと関数も変数です。


スコープは、コードのさまざまな部分から変数、オブジェクト、関数にアクセスできるかどうかを決定します。





自動的にグローバル

宣言されていない変数に値を代入すると、その変数は自動的にグローバル変数になります。

このコード例は、値が関数内で割り当てられている場合でもグローバル変数carNameを宣言します。

myFunction(); // code here can use carName function myFunction() {   carName = "Volvo"; }


ストリクトモード

最新のブラウザはすべて、「厳密モード」でのJavaScriptの実行をサポートしています。

厳格モードの使用方法については、このチュートリアルの後の章で詳しく説明します。

「厳密モード」では、宣言されていない変数は自動的にグローバルになりません。


HTMLのグローバル変数

JavaScriptの場合、グローバルスコープはJavaScript環境です。

HTMLでは、グローバルスコープはwindowオブジェクトです。

varキーワードで定義されたグローバル変数はwindowオブジェクトに属します。

var carName = "Volvo"; // code here can use window.carName

letキーワードで定義されたグローバル変数はwindowオブジェクトに属していません。

let carName = "Volvo"; // code here can not use window.carName


警告

意図しない限り、グローバル変数を作成しないでください。グローバル変数(または関数)は、window変数(または関数)を上書きできます。windowオブジェクトを含むすべての関数は、グローバル変数と関数を上書きできます。


JavaScript変数の有効期間

JavaScript変数の有効期間は、宣言された時点から始まります。

関数(ローカル)変数は、関数が完了すると削除されます。

Webブラウザーでは、ブラウザーウィンドウ(またはタブ)を閉じるとグローバル変数が削除されます。


関数の引数

関数の引数(パラメーター)は、関数内でローカル変数として機能します。



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細