JSチュートリアル

JSホーム JSの紹介 JSどこへ JS出力 JSステートメント JS構文 JSコメント JS変数 JS Let JSConst JSオペレーター JS算術 JS割り当て JSデータ型 JS関数 JSオブジェクト JSイベント JS文字列 JS文字列メソッド JS文字列検索 JS文字列テンプレート JS番号 JS番号メソッド JSアレイ JS配列メソッド JS配列ソート JSアレイの反復 JSアレイ定数 JSの日付 JSの日付形式 JS DateGetメソッド JS日付設定メソッド JS数学 JSランダム JSブール値 JSの比較 JS条件 JSスイッチ JSループFor JSループフォーイン JSループの JSループWhile JSブレイク JSIterables JSセット JSマップ JS Typeof JS型変換 JSビット単位 JS RegExp JSエラー JSスコープ JSホイスト JS厳密モード JSこのキーワード JSアロー関数 JSクラス JS JSON JSデバッグ JSスタイルガイド JSのベストプラクティス JSの間違い JSパフォーマンス JS予約語

JSバージョン

JSバージョン JS 2009(ES5) JS 2015(ES6) JS 2016 JS 2017 JS 2018 JS IE /エッジ JSの歴史

JSオブジェクト

オブジェクト定義 オブジェクトのプロパティ オブジェクトメソッド オブジェクト表示 オブジェクトアクセサー オブジェクトコンストラクター オブジェクトのプロトタイプ オブジェクト反復可能 オブジェクトセット オブジェクトマップ オブジェクトリファレンス

JS関数

関数の定義 関数パラメーター 関数の呼び出し 関数呼び出し 機能適用 関数クロージャ

JSクラス

クラスイントロ クラス継承 クラス静的

JSAsync

JSコールバック JS非同期 JSの約束 JS Async / Await

JS HTML DOM

DOMイントロ DOMメソッド DOMドキュメント DOM要素 DOM HTML DOMフォーム DOM CSS DOMアニメーション DOMイベント DOMイベントリスナー DOMナビゲーション DOMノード DOMコレクション DOMノードリスト

JSブラウザBOM

JSウィンドウ JS画面 JSロケーション JSの歴史 JSナビゲーター JSポップアップアラート JSタイミング JSクッキー

JS Web API

WebAPIイントロ WebフォームAPI Web履歴API WebストレージAPI WebワーカーAPI Web Fetch API Web Geolocation API

JS AJAX

AJAXイントロ AJAX XMLHttp AJAXリクエスト AJAX応答 AJAXXMLファイル AJAX PHP AJAX ASP AJAXデータベース AJAXアプリケーション AJAXの例

JS JSON

JSONイントロ JSON構文 JSONとXML JSONデータ型 JSON解析 JSON文字列化 JSONオブジェクト JSON配列 JSONサーバー JSON PHP JSON HTML JSON JSONP

JSとjQuery

jQueryセレクター jQuery HTML jQuery CSS jQuery DOM

JSグラフィックス

JSグラフィックス JSキャンバス JSPlotly JS Chart.js JSグーグルチャート JS D3.js

JSの例

JSの例 JS HTML DOM JSHTML入力 JSHTMLオブジェクト JSHTMLイベント JSブラウザ JSエディター JS演習 JSクイズ JS証明書

JSリファレンス

JavaScriptオブジェクト HTMLDOMオブジェクト


JavaScriptスコープ

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

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

  • ブロックスコープ
  • 機能範囲
  • グローバルスコープ

ブロックスコープ

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

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

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

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

{
  let x = 2;
}
// x can NOT be used here

キーワードで宣言された変数は、varブロックスコープを持つことはできません。

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

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

ローカルスコープ

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

// code here can NOT use carName

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

// code here can NOT use carName

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

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

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

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


機能範囲

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

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

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

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

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

グローバルJavaScript変数

関数の外部で宣言された変数は、GLOBALになります。

let carName = "Volvo";
// code here can use carName

function myFunction() {
// code here can also use carName
}

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

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


グローバルスコープ

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

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

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

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

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

JavaScript変数

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

スコープは、コードのさまざまな部分からの変数、オブジェクト、および関数のアクセシビリティを決定します。



自動的にグローバル

宣言されていない変数に値を割り当てると、その値は自動的にGLOBAL変数になります。

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

myFunction();

// code here can use carName

function myFunction() {
  carName = "Volvo";
}

厳密モード

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

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

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


HTMLのグローバル変数

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

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

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

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

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

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

警告

意図しない限り、グローバル変数を作成しないでください。

グローバル変数(または関数)は、ウィンドウ変数(または関数)を上書きできます。
ウィンドウオブジェクトを含むすべての関数は、グローバル変数と関数を上書きできます。


JavaScript変数の有効期間

JavaScript変数の有効期間は、宣言されたときに始まります。

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

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


関数の引数

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