JavaScript関数オブジェクト、シンボル関数式

3131 ワード

関数=オブジェクト
関数はオブジェクトなので、メソッドを使用したりpropertyを追加したりできます.
function func(a,b, ...rest) {}

console.log(func.name) // func
console.log(func.length) // 2 매개변수 개수 출력
*나머지 표현식(...rest)은 존재하더라도 길이에 포함안됨.

함수에 프로퍼티를 추가
func.counter = 0;

console.log(func.counter) // 0
関数propertyを使用する理由は、モジュールの代わりに使用できるからです.関数内部で宣言された変数は外部からアクセスできません.関数propertyに値を格納する場合は、外部からアクセスできます.
記名関数式
関数内で自分を呼び出すために使用します.関数式でのみ使用できます.
矢印関数は使用できません
let sayHi = function hi() {}

보통 함수내부에서도 자신을 호출할 때 sayHi()를 사용하지만 hi()로 호출하면 
안전한 점이 있다.

let copy = sayHi
sayHi = null

함수를 카피하고 기존 변수는 제거하거나 다른 용도에 사용하면 sayHi()를 호출할
경우 에러가 나게 되어있다. 하지만 기명 함수 표현식으로 호출하게 되면
에러를 방지할 수 있다.