2016-08-03 3 views
0

아래 두 코드에서 동일한 개체와 기능을 가진 두 개의 코드 조각이 있습니다. 따라서 그들은 모두 동일한 가치를 반환해야합니다. 유일한 차이점은 밑줄 코드의 함수에서 'for 루프'에 대괄호와 'else'문을 추가 한 것입니다.JS : 유사한 함수에 대해 다른 값 얻기

각 코드 스 니펫의 함수가 같은 값 대신 다른 값을 반환하는 이유는 무엇입니까? 감사합니다

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 루프에서 브래킷을 가지고있다. 코드의 두 번째 세트에서

+0

루프에 대해 생각하면 실제로 분명합니다. –

+0

실제 상황에서 실제로 이런 일이 일어나는 것은 너무 귀엽다. – mash

답변

0

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

, 오직 첫 번째 항목을 확인 할 수 있습니다. 첫 번째 항목과 일치하는 항목이 있고 역할을 반환해야합니다. 그렇지 않으면 "여기에서 작동하지 않습니다."라고 반환하면 루프를 계속할 기회가 없습니다.

첫 번째 코드에서 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

관련 문제