2017-09-11 3 views
-1

은 : obj.name이 정의자바 스크립트 변수 할당 : 삼항 연산자 VS object.property || 다음 변수 할당의 성능과 신뢰성에서 차이가 어떤 가치

var obj = {name: "Antonia"}; 

var foo = obj.name ? obj.name : "foo"; 
var baz = obj.name || "baz"; 

때문에, foo는바즈 모두 "안토니아"를 포함합니다.

내가 아는 한, 코드는 obj.name null, undefined, 0 및 false 이외의 값에 대해 동일하게 동작해야합니다. 속성이 값 중 하나에 설정되면 foo는 "foo"를 포함하고 baz는 "baz"로 지정됩니다.

결손이 있습니까? 어느 것을 사용 하시겠습니까?

감사합니다!

PS : 바이올린은 어색 같은 일을 달성, 당신이이기는 준 아루 https://jsfiddle.net/a2rgvhzm/

+2

나는이 점에서 개인적인 취향에 대해서만 생각합니다 ... –

+0

나는 @ Karl-AndréGagnon에 동의합니다. 또는 버전이 나에게 더 명확합니다. –

+0

당신이 요구하는 것을 분명히해야합니다. 정식 사용에 대해 묻는 것처럼 들리 겠지만, 실제로는 실제로 사용되지 않습니다. 코드 바에서 무엇이 더 명확한 지 –

답변

0

예를 재생합니다. 그래서 그래, 그들은이 경우에 동등합니다. 당신은 일반적으로 참/거짓으로 대답하는 object.name이 있는지 여부를 묻는 있기 때문에

var foo = obj.name ? obj.name : "foo";

이 어색하다. 여기에 멤버 자체 또는 임의의 문자열에 대한 질문에 대답하고 있습니다. 따라서 질문/답변은 일관성이 없습니다.

var baz = obj.name || "baz"; 프로덕션에서 더 많이 사용되는 것으로 보아서 더 선언적입니다. "baz에 객체 이름을 할당하십시오. 오, 존재하지 않는 경우 baz에 문자열"baz "를 할당하십시오. 우리는 확실히 알고 있습니다."

성능에 대한 질문에 대답하기 위해 이들 각각을 프로파일 링해야 할 수 있습니다. 이 내용이 모범 사례에 대한 귀하의 질문을 분명히하기를 바랍니다.