2016-08-03 6 views
0

に異なる値を取得します。だから両方とも同じ値を返すべきです。私が見ることができる 唯一の違いは、ブラケットと下のコードスニペット内の関数の「forループ」の「他の」ステートメントを追加することです。JS:私は両方で同じオブジェクトと機能を持つ2つのコードスニペットを持って下に同様の機能

なぜ各コードスニペットの関数は異なる値の代わりに、同じ値を返しますか?おかげ

var employees = [{ 
 
    firstName: 'Ollie', 
 
    lastName: 'Hepburn', 
 
    role: 'Boss' 
 
}, { 
 
    firstName: 'Morty', 
 
    lastName: 'Smith', 
 
    role: 'Truck Driver' 
 
}, { 
 
    firstName: 'Peter', 
 
    lastName: 'Ross', 
 
    role: 'Warehouse Manager' 
 
}, { 
 
    firstName: 'Cal', 
 
    lastName: 'Neil', 
 
    role: 'Sales Assistant' 
 
}, { 
 
    firstName: 'Jesse', 
 
    lastName: 'Saunders', 
 
    role: 'Admin' 
 
}, { 
 
    firstName: 'Anna', 
 
    lastName: 'Jones', 
 
    role: 'Sales Assistant' 
 
}, { 
 
    firstName: 'Carmel', 
 
    lastName: 'Hamm', 
 
    role: 'Admin' 
 
}, { 
 
    firstName: 'Tori', 
 
    lastName: 'Sparks', 
 
    role: 'Sales Manager' 
 
}, { 
 
    firstName: 'Peter', 
 
    lastName: 'Jones', 
 
    role: 'Warehouse Picker' 
 
}, { 
 
    firstName: 'Mort', 
 
    lastName: 'Smith', 
 
    role: 'Warehouse Picker' 
 
}, { 
 
    firstName: 'Anna', 
 
    lastName: 'Bell', 
 
    role: 'Admin' 
 
}, { 
 
    firstName: 'Jewel', 
 
    lastName: 'Bell', 
 
    role: 'Receptionist' 
 
}, { 
 
    firstName: 'Colin', 
 
    lastName: 'Brown', 
 
    role: 'Trainee' 
 
}]; 
 

 
function findEmployeesRole(name) { 
 
    for(var i = 0; i < employees.length; i++) 
 
    if(name === employees[i].firstName + " " + employees[i].lastName) return employees[i].role; 
 
    return "Does not work here!"; 
 
} 
 
             
 
             console.log(findEmployeesRole("Colin Brown"));

以下のコード内のオブジェクト以下の関数は、forループ内のブラケットを有しています。コードの第2セットでは

var employees = [{ 
 
    firstName: 'Ollie', 
 
    lastName: 'Hepburn', 
 
    role: 'Boss' 
 
}, { 
 
    firstName: 'Morty', 
 
    lastName: 'Smith', 
 
    role: 'Truck Driver' 
 
}, { 
 
    firstName: 'Peter', 
 
    lastName: 'Ross', 
 
    role: 'Warehouse Manager' 
 
}, { 
 
    firstName: 'Cal', 
 
    lastName: 'Neil', 
 
    role: 'Sales Assistant' 
 
}, { 
 
    firstName: 'Jesse', 
 
    lastName: 'Saunders', 
 
    role: 'Admin' 
 
}, { 
 
    firstName: 'Anna', 
 
    lastName: 'Jones', 
 
    role: 'Sales Assistant' 
 
}, { 
 
    firstName: 'Carmel', 
 
    lastName: 'Hamm', 
 
    role: 'Admin' 
 
}, { 
 
    firstName: 'Tori', 
 
    lastName: 'Sparks', 
 
    role: 'Sales Manager' 
 
}, { 
 
    firstName: 'Peter', 
 
    lastName: 'Jones', 
 
    role: 'Warehouse Picker' 
 
}, { 
 
    firstName: 'Mort', 
 
    lastName: 'Smith', 
 
    role: 'Warehouse Picker' 
 
}, { 
 
    firstName: 'Anna', 
 
    lastName: 'Bell', 
 
    role: 'Admin' 
 
}, { 
 
    firstName: 'Jewel', 
 
    lastName: 'Bell', 
 
    role: 'Receptionist' 
 
}, { 
 
    firstName: 'Colin', 
 
    lastName: 'Brown', 
 
    role: 'Trainee' 
 
}]; 
 

 
function findEmployeesRole(name) { 
 
    for (var i = 0; i < employees.length; i++){ 
 
    if(name === employees[i].firstName + " " + employees[i].lastName){ 
 
     return employees[i].role; 
 
    } else { 
 
     return "Does not work here!"; 
 
    } 
 
    } 
 
} 
 

 
console.log(findEmployeesRole("Colin Brown"));

+0

あなたは、これが実際に現実の生活の中で人々に起こるようにキュートなループ –

+0

考えてみれば、それは実際には明らかです。 – mash

答えて

0

、今まで最初の項目をチェックすることができるであろう。どちらか、あなたが最初の項目に一致するものを持っていて、役割を返し、そうでなければ、「ここでは動作しません」を返す、ループを継続するためにチャンスがありません。コードの最初の部分で

、return文は、それだけですべての項目がチェックされるまで、「ここでは動作しません」を返すことを意味しますループ、外に実際にあります。中括弧を使用すると、それは次のようになります。

function findEmployeesRole(name) { 
    for (var i = 0; i < employees.length; i++) { 
     if (name === employees[i].firstName + " " + employees[i].lastName) { 
      return employees[i].role; 
     } 
    } 
    return "Does not work here!"; 
} 

を一般的には、常にそれが何が起こっているのか一目見ただけで完全には明らかではありません。このような状況を防ぐために、括弧を使用することをお勧めと考えられています。

+0

私はそれを見る!それを見ようと1時間半を過ごした。それが何か簡単だと分かっていました。あなたはあなたの説明にとても助けてくれてありがとう! – TheBiscuit

関連する問題