将胖箭头转换为标准符号

时间:2017-07-07 02:10:38

标签: javascript

如何将这段代码转换为而不是使用胖箭头?

\r\n

我将第一行改为

propertyOf = object => {
  return propName => {
    for (let key in object) {
  if(key === propName) return object[key]
    }
  }
}

并且代码仍然有效。当我把第二行改为

propertyOf = function (object) {

当我尝试调用该函数时,我收到一条错误说“未定义”。我在第二行旁边也有一个错误,上面写着'你的意思是运行条件而不是分配吗?'

完整的代码是:

return propName = function () {

3 个答案:

答案 0 :(得分:5)

return propName => {中,propName是函数的参数,因此它转换为

return function(propName) {

documentation of the arrow function中,指定当只有一个参数时,可以省略括号。

答案 1 :(得分:2)

我想指出您尝试使用的代码段

return propName = function () {

有效的 JavaScript。得到undefined因为propName变量在内部函数中未定义。因此,if循环中的for..in条件几乎转换为

if (key === undefined) // This never passes, hence undefined is returned 

如果您将代码更改为

,则代码将工作
return propName = function(propName) {

完整的工作示例:



let bob = {
    name: 'Bob',
    age: 87
  },
  searchBob;

propertyOf = function(object) {
  return propName = function(/* This is the only change */ propName) {
    for (let key in object) {
      if (key === propName) return object[key]
    }
  }
}

searchBob = propertyOf(bob);

console.log(searchBob('age'));




话虽这么说,但我没有理由为什么你应该这样做。 This answer是最简单的。

答案 2 :(得分:1)

我会这样做:

let bob = {
  name: 'Bob',
  age: 87
},
searchBob;

propertyOf = function (person,propName) {

    for (let key in person) {
       if(key === propName) return person[key]
    }

}

searchBob = propertyOf(bob, "name");