node.js - How to get function name in javascript arrow function? - Stack Overflow

I want to get a function's name in an arrow functionActually, if we writefunction abc(){let func

I want to get a function's name in an arrow function

Actually, if we write

function abc(){
  let funcName = arguments.callee.name
}

But in an arrow function

abc: ()=>{
  let funcName = arguments.callee.name
}

funcName return ''

I want to get a function's name in an arrow function

Actually, if we write

function abc(){
  let funcName = arguments.callee.name
}

But in an arrow function

abc: ()=>{
  let funcName = arguments.callee.name
}

funcName return ''

Share Improve this question edited Aug 17, 2021 at 4:37 Saiyavong MITTHASONE asked Aug 17, 2021 at 4:33 Saiyavong MITTHASONESaiyavong MITTHASONE 1111 silver badge9 bronze badges 7
  • Isn't it an anonymous function ? – MaxZoom Commented Aug 17, 2021 at 4:34
  • 2 This is kind of like asking what is the variable name of the number 12 – slebetman Commented Aug 17, 2021 at 4:37
  • @MaxZoom I have added function name – Saiyavong MITTHASONE Commented Aug 17, 2021 at 4:37
  • 1 Are you sure you don't get an error when you access arguments object inside the arrow function? – Yousaf Commented Aug 17, 2021 at 4:45
  • 1 The name of the function is "abc:", assigned to the arrow function when it was piled as the abc property of a parent object. You could just hard code it in the arrow function if you want. – traktor Commented Aug 17, 2021 at 6:06
 |  Show 2 more ments

1 Answer 1

Reset to default 8
  • Arrow functions do not have an arguments binding. But they have access to the arguments object of the closest non-arrow parent function. Named and rest parameters are heavily relied upon to capture the arguments passed to arrow functions.
function dummy() {
  return (() => arguments.callee.name)(); // dummy
}
  • The value of this inside an arrow function remains the same throughout the lifecycle of the function and is bound to the value of the closest this-providing environment.
const obj = {
  // like a normal function, returns obj - defines like obj.a = function a() {};
  a() { return this },
  // arrow function uses global as this
  b: () => { return this },
};
console.log(obj.a() == obj) // true
console.log(obj.b() == obj) // false
console.log(obj.b() == window) // true
  • Arrow functions can never be used as constructor functions. Hence, they can never be invoked with the new keyword. As such, a prototype property does not exist for an arrow function.

Therefor, the only way to get the name of an arrow function is from accessing the direct reference to it.

const arrow = () => arrow.name;
console.log(arrow()); // "arrow"

const obj = {
  a: () => obj.a.name;
}
console.log(obj.a()); // "a"

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744261697a4565664.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信