- Node.js 12實戰
- 趙榮嬌
- 250字
- 2022-07-27 19:18:59
3.3.3 name屬性
調用函數的name屬性會返回該函數的函數名:
function foo() {} foo.name // "foo"
ES6對name屬性的行為做出了一些修改,如果將一個匿名函數賦值給一個變量,ES5的name屬性會返回空字符串,而ES6的name屬性會返回實際的函數名:
var f = function () {}; // ES5 f.name // "" // ES6 f.name // "f"
上述代碼中,變量f等于一個匿名函數,ES5和ES6的name屬性返回的值不一樣。如果將一個具名函數賦值給一個變量,則ES5和ES6的name屬性都返回這個具名函數原本的名字。
const bar = function baz() {}; // ES5 bar.name // "baz" // ES6 bar.name // "baz"
Function構造函數返回的函數實例,name屬性的值為anonymous:
(new Function).name // "anonymous"
bind返回的函數,name屬性值會加上bound前綴:
function foo() {}; foo.bind({}).name // "bound foo" (function(){}).bind({}).name // "bound "