こんにちはタクゾウです。
jsの関数はややこしい、他の言語を習得している人からしたら理解しづらい部分がありますが、深くみていきたいと思います
関数の定義方法は3種類ある
関数の定義方法は下記3つです。
1, funciton命令
JavaScript
//1,function命令の書き方
function myFunc(){
}
2, functionコンストラクタ
ほぼ使わないので今回は説明省略しちゃいます。
3, 関数リテラル
変数を宣言してあげて、その中に関数をいれるやりかた。最後にセミコロンがつくので注意!
JavaScript
//関数リテラルの書き方
var myFunc = myFunc(){
};
関数スコープについて
変数が使える範囲のこと
関数の中で定義したローカル変数は、関数の外から呼び出せないので注意!
JavaScript
var globalval = 69;
console.log(globalval);//69
//関数の中で定義するとローカル変数
function myFunc(){
var localVal = 69;
}
console.log(localVal);//結果 undefined
関数ないでローカル関数を読みに行った場合も、変数定義前だと未定義になるので、変数は定義後に呼び出すようにしましょう。
ややこしいですが、そういうものだと思うしかないです
JavaScript
var val = 69;
function myFunc(){
console.log(val);//結果 undefined
var val = 999;
}
//myFuncの中で読んだvalを読んだことになる。ローカル変数valはまだ未定義なので、undefinedになる。
関数の引数について
JavaScriptの関数では、引数のチェックはおこわれない
引数の数を間違えた場合、他の言語だとエラーになるがJavaScriptでは、引数のチェックが行われないため、実行することができてしまいます。
JavaScript
function myFunc(num){
console.log(num);
}
myFunc(69);//結果 69
myFunc(69, '第2引数にもいれてみる');//結果 69
同じ関数名を2つの作った場合の処理
引数関係なく同じ関数名の場合は、上書きされるので注意して書きましょう。
JavaScript
function myFunc(num){
console.log('第1引数のみの関数');
}
function myFunc(num, str){
console.log('第2引数まである関数');
}
myFunc(69);//結果 第2引数まである関数
myFunc(69, '第2引数を入れてみる');//結果 第2引数まである関数
引数のチェック方法
argumentsオブジェクトを使用することで、関数のチェックをすることができます。
argumentsオブジェクトとは、関数内だけで使えるオブジェクトで、関数を作ると自動で生成されるもの、
関数で使う引数は全て、argumentsオブジェクトで管理されている
JavaScript
//myFunc()の引数は指定してないが、実装できてします。
function myFunc(){
console.log(arguments[0]);
console.log(arguments[1]);
}
myFunc(69, '第2引数をいれる');//結果 69 第2引数をいれる
//lengthで引数チェックをする例
function myFunc(val1, val2){
if(arguments.length !== 2){
throw new Error('引数が不正です');
}
console.log(val1 + val2);
}
myFunc(69);//結果 引数が不正です
myFunc(69, 31);//結果 100
MEMO
JSで関数を作る時には、「引数チェック」と「エラーハンドリング」を必ずしよう!
コメントを残す