JavaScriptの関数
Rubyでいうところのメソッドを、JavaScriptでは関数と呼ぶ。
・function
functionに続けて関数の名前を記述し、{ }のなかに処理を書く。関数を定義する方法で、関数宣言とよぶ。
function 関数名( 引数 ) {
# 処理
}
・関数式
関数式と、関数宣言の違いは記述様式にある。
JavaScriptの関数宣言:function 関数名( ){ ~ }
関数式:function( ){ }
無名の関数を変数に定義または代入して関数を定義する。
# 関数宣言の場合
function 関数名( 引数 ){
# 関数内の処理
}
# 関数式の場合
変数 = function( 引数 ){
# 関数内の処理
}
______________________
・関数式と関数宣言の特徴
hello()
const hello = function(){
console.log("hello")
}
# 出力結果
Uncaught ReferenceError: Cannot access 'hello' before initialization
at <anonymous>:1:1
1行目の時点で関数helloは定義されていないため、このようなエラーが発生する。
hello()
function hello(){
console.log('hello')
}
# 出力結果
hello
関数宣言は先に読み込まれる。
関数式であれば先に読み込まれることはない。
______________________
・無名関数
関数式で記述されているfunction( ){ }。関数名なしで関数を定義することができる。より簡潔なコードが記述できるメリットがある。
# 関数宣言
function hello(){
console.log('hello')
}
# 関数式(無名関数)
const hello = function(){
console.log('hello')
}
・即時関数
関数を定義すると同時に実行される構文。関数を定義してから呼び出すという手間を省くことができる。
# 無名関数
const countNum = function(num) {
console.log(num)
}
countNum(1)
# 即時関数
(function countNum(num) {
console.log(num)
})(1)
( )の中に、functionからはじまる関数定義そのものを配置することで、その関数を即実行する。関数を呼び出す手間が省ける。
______________________
・アロー関数
functionの記述を省略し、代わりに()=>という記述によって関数を定義する構文。より短い記述で関数定義をできる。
# 無名関数
const 変数名 = function(){
処理
}
# アロー関数
const 変数名 = () => {
処理
}
______________________
JavaScriptにおいて、変数定義などの最後にはセミコロンを以下のように付与する。目的は文章の終わりを示すため。
・・・このセミコロンは省略できる。
ただし、以下のように即時関数を用いる場合などはエラーとなることがあある。文字列がひと続きであると判断されてしまうため。
# エラーとなる
const your_name = "Tom"
(function sayHello(name) {
console.log(name);
})(your_name);
# エラーにはならない
const your_name = "Tom";
(function sayHello(name) {
console.log(name);
})(your_name);
2020/11/11
この記事が気に入ったらサポートをしてみませんか?