如何将这段代码转换为而不是使用胖箭头?
\r\n
我将第一行改为
propertyOf = object => {
return propName => {
for (let key in object) {
if(key === propName) return object[key]
}
}
}
并且代码仍然有效。当我把第二行改为
时propertyOf = function (object) {
当我尝试调用该函数时,我收到一条错误说“未定义”。我在第二行旁边也有一个错误,上面写着'你的意思是运行条件而不是分配吗?'
完整的代码是:
return propName = function () {
答案 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");