javascriptの関数の書き方について
最近少しずつ、javascriptについても学習をしています。
当然ながら、rubyとは動きが違うのですが、違う部分を意識するためにも、ここに記載しておきます。
関数の作り方
function命令で定義する
標準的な書き方ですね。
function 関数名 {
処理を記入
}
function hello(name) { return `my name is ${name}`; } hello("mikami"); "my name is mikami"
Functionコンストラクターで作成する
これは特殊な書き方だと思います。
特にこれで書く利点もないようなので、普通は書かないほうがいいです。
ただ、こんな書き方もあるんだなということで、書いておきます。
var 変数名 = new Function(引数, 処理を記入)
var hello = new Function('name', 'return `my name is ${name}`'); hello('mikmi'); "my name is mikami"
関数リテラルで作成する
これもよく利用される書き方だと思います。
var 変数名 = function(引数, 処理)
var hello = function(name) { return `my name is ${name}`; }; hello('mikami'); "my name is mikami"
アロー関数で定義する
ES2015から使用できるようになりました。
coffee script を使用している人は、アロー演算子は馴染みがあるかも。
var hello = (name) => { return `my name is ${name}`; } hello('mikami'); "my name is mikami"
function命令の処理
javascriptのfunction命令は静的解析で行われます。
そのため、次のようなコードは動きます。
hello('mikami'); function hello(name) { return `my name is ${name}`; };
では、関数リテラルで表現している場合はどうなるでしょうか?
hello('mikami'); var hello = function(name) { return `my name is ${name}`; }; Uncaught TypeError: hello is not a function(…)
関数リテラルの場合は、実行時に評価されています。
ここら辺はちょっとした注意事項だと思います。
以上です。