2017-07-07 2 views
2

このコードをに変換するにはどうすればいいですか?太い矢印を使用しますか?太い矢印を標準表記に変換する

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

私は

propertyOf = function (object) { 

に最初の行を変更し、コードがまだ働いていました。私も二行目を

に変更しました
return propName = function() { 

私は関数を呼び出そうとしたときにエラーが発生しました。 2行目の横に「割り当ての代わりに条件付きで実行しようとしましたか?」というエラーが表示されました。

完全なコードは、このです:return propName => {

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

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

searchBob = propertyOf(bob); 



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

答えて

5

、たpropNameは、関数のパラメータであるので、それはdocumentation of the arrow function

return function(propName) { 

に変換し、それはそのときが指定されています唯一のパラメータであるため、かっこは省略できます。

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"); 
2

を私はあなたが

return propName = function() { 

を使用しようとしたスニペットは有効のJavaScriptであることを指摘したいと思います。内部変数の内部でpropName変数が未定義であるため、undefinedが得られます。したがってfor..inループ内if条件はかなり

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が最も単純なものです。

関連する問題