関数宣言

function 関数名(引数){ 処理 }
function (引数){ 処理 } // 無名関数
var func=function(引数){ 処理 }
(function (受け取る引数){ 処理 }(設定する引数)); // 即時関数
以下のtest1が関数です。表示ボタンをクリックすると関数により表示内容が書き換えられます。
ボタンを押す前

可変長引数

関数の引数はarguments配列に格納されています。引数の個数はarguments.lengthで取得できます。

arguments.callee

関数の引数はargumentsのcalleeに関数への参照が保存されています。
以下の例は、テキストボックスに入力された数値から階乗を求めています。
arguments.callee()で自分自身を再帰呼び出しを実行しています。171以上を入力すると無限大と表現されます。

call

callを使うとthisのオブジェクトを指定して関数を呼び出すことができます。
以下の例では実行ボタンをクリックするとOBJ1の関数をOBJ2オブジェクトを指定して呼び出しています。

apply

applyを使うとthisのオブジェクトを指定して関数を呼び出すことができます。
以下の例では表示1ボタンをクリックするとOBJ3の関数をOBJ4オブジェクトを指定して呼び出しています。callとの違いは引数を配列で渡している点です。
配列の引数を展開することができるので、例えば最大値を求めるMath.maxに配列を渡すときに使うことができます。(JavaScriptのバージョン(ES6)では直接配列を引数として渡すことができる。) 表示2ボタンをクリックすると配列の最大値を表示します。

クロージャ

クロージャを使うとオブジェクトの変数・関数をカプセル化(プライベート)用いることができます。
以下の例では、nameとsetNameをカプセル化しています。getName,sets関数、ageは公開しています。
実行ボタンをクリックすると鶴 100が表示されます。

ビルドイン関数

どのオブジェクトにも属さない標準でサポートされている関数です。

isFinite()

引数を数値変換し NaN, +∞, -∞ であれば false, そうでなければ true

eval()

eval()は引数で与えられた文字列を式として評価
例えば"10+10"は20を返します。

encodeURIComponent()

文字列をURIエンコード
#$&+,/:;=?@の文字もエンコードされる。

decodeURIComponent()

URIエンコードされた文字列をデコード

encodeURI()

文字列をエンコード
#$&+,/:;=?@の文字はエンコードされない。

decodeURI()

URIエンコードされた文字列をデコード

unescape()

16進エンコーディングでエスケープされた文字列をASCII文字セットにデコード。非奨励

escape()

ASCII 文字以外の文字列をエスケープした16 進エンコーディング。非奨励

isNaN()

数値かどうか判定します。数値の場合はfalseを数値でない場合はtrue

parseFloat()

浮動小数点に変換します。変換できない文字が発生したら変換をやめます。

parseInt()

整数に変換します。変換できない文字が発生したら変換をやめます。