JavaScript:箭头功能是一流的功能吗?

时间:2017-09-25 22:23:57

标签: javascript

看到箭头函数没有 using (RSA rsa = RSA.Create()) { rsa.KeySize = 1024; privateKey = rsa.ToXmlString(true); publicKey = rsa.ToXmlString(false); } ,它们与常规函数相比缺乏相当基本的能力:它们不能用作构造函数,因为它们没有上下文。

考虑到这一点,箭头函数是否被认为是一流函数?

编辑:如果箭头函数被认为是第一类函数,箭头函数的哪些属性可以让你仍然称它为一个?

1 个答案:

答案 0 :(得分:1)

  

看到箭头函数没有这个,它们与常规函数相比缺乏相当基本的能力:它们不能用作构造函数,因为它们没有上下文。

这只与函数的执行有关,而不是与它的类型有关。 this值是执行的一个方面,而不是函数对象本身。

  

考虑到这一点,箭头函数是否被视为第一类对象?

是的,它们就像任何其他对象一样是数据对象,它们的唯一区别在于它们包含可以调用的可执行代码。不同类型函数在调用时的能力和局限性与它们是否属于一等对象无关。



const fn = foo => foo + 42
const fn2 = fn

console.log(fn == fn2) // true

console.log(fn(42))
console.log(fn2(42))

fn.foo = "bar"
console.log(fn2.foo) // "bar"




  

编辑:如果箭头函数被认为是第一类函数,箭头函数的哪些属性可以让你仍然称它为一个?

与传统功能的属性相同。他们是从Function.prototype继承的所有对象。他们的主要区别在于他们的调用,这也不会改变他们是否是第一类对象/功能的问题。他们可以语法在任何地方使用任何其他对象。