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関数パラメーター


JavaScriptfunctionは、パラメーター値(引数)のチェックを実行しません。


関数のパラメーターと引数

このチュートリアルの前半で、関数が パラメーターを持つことができることを学びました。

function functionName(parameter1, parameter2, parameter3) {
  // code to be executed
}

関数パラメーター、関数定義にリストされている名前です。

関数の引数は、関数 に渡される(および関数によって受け取られる)数値です。


パラメータルール

JavaScript関数定義は、パラメーターのデータ型を指定しません。

JavaScript関数は、渡された引数に対して型チェックを実行しません。

JavaScript関数は、受け取った引数の数をチェックしません。


デフォルトパラメータ

引数が欠落している(宣言されていない)関数が呼び出された場合、欠落している値はに設定され undefinedます。

これが許容できる場合もありますが、パラメータにデフォルト値を割り当てる方がよい場合もあります。

function myFunction(x, y) {
  if (y === undefined) {
    y = 2;
  }
}

ECMAScript 2015では、関数宣言でデフォルトのパラメーター値を使用できます。

function myFunction(x, y = 2) {
  // function code
}


引数オブジェクト

JavaScript関数には、argumentsオブジェクトと呼ばれる組み込みオブジェクトがあります。

引数オブジェクトには、関数が呼び出された(呼び出された)ときに使用された引数の配列が含まれています。

このように、関数を使用して、(たとえば)数値のリストで最も高い値を見つけることができます。

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
  let max = -Infinity;
  for (let i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
}

または、すべての入力値を合計する関数を作成します。

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
  let sum = 0;
  for (let i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }
  return sum;
}

引数が多すぎる(宣言されている)関数が呼び出された場合、argumentsオブジェクトを使用してこれらの引数に到達できます。


引数は値で渡されます

関数呼び出しのパラメーターは、関数の引数です。

JavaScript引数はによって渡されます:関数は値のみを認識し、引数の位置は認識しません。

関数が引数の値を変更しても、パラメーターの元の値は変更されません。

引数への変更は、関数の外部では表示(反映)されません。


オブジェクトは参照によって渡されます

JavaScriptでは、オブジェクト参照は値です。

このため、オブジェクトは参照によって渡されたように動作します。

関数がオブジェクトのプロパティを変更すると、元の値が変更されます。

オブジェクトプロパティへの変更は、関数の外部に表示(反映)されます。