개체에 몇 가지 특정 속성이 있는지 확인해야합니다. 이를 위해 두 가지 질문이 있습니다.
내 자바 스크립트 솔루션은 다음과 같습니다.
if(obj && obj.pOne && obj.pTwo && obj.pThree) doStuff();
더 짧지 않을 커피 스크립트에서 :
if obj and obj.pOne and obj.pTwo and obj.pThree then doStuff()
여기에서 오해하지 마십시오. 작동하지 않습니다.
그런 다음 in
if 절 에 대한 연산자를 만났습니다 (이러한 검사에 사용한 적이 없음). 이것이 내가 이루고 싶은 것을하는 올바른 방법입니까? 아니면 그게 일종의 금지입니까, 아니면 더 나은 / 깨끗한 해결책이 있습니까?
내 코드는 다음과 같습니다.
if(obj && ('pOne' && 'pTwo' && 'pThree' in obj)) doStuff();
다음과 같은 coffeescript :
if obj and ('pOne' and 'pTwo' and 'pThree' of obj) then doStuff()
첫 번째 줄은 원하는 것입니다. 이대로 잘못된 것은 없습니다. 함수를 호출하기 전에 4 가지 사항을 확인해야한다고 생각한다면 함수를 다르게 작성하는 것이 좋습니다.
if(obj && obj.pOne && obj.pTwo && obj.pThree) doStuff();
참조 : 방어 프로그래밍이 쓰레기 인 이유
추신 . 마지막 예는 좋지 않으며 생각하는 방식을 평가하지 않습니다.
사용하기 더 좋게 만들기 위해 함수를 다시 작성하는 것을 고려하십시오.
var doStuff = function(obj) {
obj = obj || {};
obj.pOne = obj.pOne || "pOneDefault";
obj.pTwo = obj.pTwo || "pTwoDefault";
obj.pThree = obj.pThree || "pThreeDefault";
console.log(obj);
};
doStuff();
// {pOne: "pOneDefault", pTwo: "pTwoDefault", pThree: "pThreeDefault"}
doStuff({pOne: "foo"});
// {pOne: "foo", pTwo: "pTwoDefault", pThree: "pThreeDefault"}
doStuff({pTwo: "bar"});
// {pTwo: "bar", pOne: "pOneDefault", pThree: "pThreeDefault"}
doStuff({pTwo: "hello", pThree: "world"});
// {pTwo: "hello", pThree: "world", pOne: "pOneDefault"}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다