We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

function.name 속성(property)은 함수 이름을 반환합니다.

Property attributes of Function.name
Writable no
Enumerable no
Configurable yes

비표준, ES6 이전 구현에서는 설정가능(configurable) attribute도 false였음을 주의하세요.


name 속성은 함수 이름 또는 (ES6 구현 이전) 익명(anonymous) 함수에 대해서는 빈 문자열을 반환합니다:

function doSomething() {}

console.log(doSomething.name); // logs "doSomething"

new Function(...) 또는 그냥 Function(...) 구문으로 생성된 함수는 name 속성을 빈 문자열로 설정합니다. 다음 예에서는 익명 함수가 생성되므로 name은 빈 문자열을 반환합니다:

var f = function() {};
var object = {
  someMethod: function() {}

console.log(f.name == ''); // true
console.log(object.someMethod.name == ''); // 역시 true

ES6 함수를 구현한 브라우저는 익명 함수 이름을 그 구문상 위치로부터 추측할 수 있습니다. 예를 들어:

var f = function() {};
console.log(f.name); // "f"

function 식에서 이름으로 함수를 정의할 수 있습니다:

var object = {
  someMethod: function object_someMethod() {}
console.log(object.someMethod.name); // logs "object_someMethod"

try { object_someMethod } catch(e) { console.log(e); }
// ReferenceError: object_someMethod가 정의되지 않음

함수 이름은 바꿀 수 없습니다, 이 속성은 읽기 전용입니다:

var object = {
  // 익명
  someMethod: function() {}

object.someMethod.name = 'someMethod';
console.log(object.someMethod.name); // 빈 문자열, someMethod는 익명

그러나 바꾸려면, Object.defineProperty()를 사용할 수 있습니다.

객체의 'class'를 확인하기 위해 obj.constructor.name을 사용할 수 있습니다:

function a() {}

var b = new a();

console.log(b.constructor.name); // logs "a"


스펙 상태 설명
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'name' in that specification.
Standard 초기 정의.
ECMAScript Latest Draft (ECMA-262)
The definition of 'name' in that specification.

브라우저 호환성

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 33.0 (Yes) No support (Yes) (Yes)
Configurable: true 43.0 38 (38) ? ? ?
Inferred names on anonymous functions 51.0 No support [1] ? ? ?
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support (Yes) (Yes) (Yes) No support (Yes) (Yes) (Yes)
Configurable: true ? ? 38.0 (38) ? ? ? ?
Inferred names on anonymous functions No support 51.0 No support [1] ? ? ? 51.0

[1] bug 883377 참조.

문서 태그 및 공헌자

이 페이지의 공헌자: Netaras, bsidesoft
최종 변경: Netaras,