답변:
var startingNumber = startingNumber || 1;
당신이 찾고있는 것과 같은 것, 정의되지 않은 경우 기본값은 어디입니까?
var foo = bar || 1; // 1
var bar = 2;
foo = bar || 1; // 2
그건 그렇고, 이것은 객체를 포함한 많은 시나리오에서 작동합니다.
var foo = bar || {}; // secure an object is assigned when bar is absent
||대신에 의미 하지 ??않습니까?
||연산자가 true 또는 false를 반환하지 않고 첫 번째 'truthy'값을 반환 하기 때문에이 방법이 작동 합니다. 당신이 말 val0과 val1같이 undefined하고 val2있다 2, val3입니다 3. 첫 번째 '진정한'값이므로을 val0 || val1 || val2 || val3반환 2합니다.
|| 만나는 첫 번째 진실 값을 반환하므로 C #과 유사한 병합 연산자로 사용할 수 있습니다. ??
startingNum = startingNum || 1;
예, 있습니다 :
var startingNum = startingNum || 1;
일반적으로 문서에expr1 || expr2 언급 된대로 다음과 같은 방식으로 작동합니다 .
expr1로 변환 할 수 있는지 여부를 반환 합니다true. 그렇지 않으면를 반환합니다expr2. 따라서, 함께 사용될 때Boolean값을||반환true피연산자 인 경우true; 둘 다 있으면을false반환합니다false.
if a is truthy대 if a is evaluated to true?
위의 답변이 정확합니다. JavaScript에서 다음 문 :
startingNum = startingNum ? otherNum : 1
다음과 같이 표현할 수 있습니다.
startingNum = otherNum || 1
여기에서 다루지 않는 또 다른 시나리오는 일치하지 않을 때 값이 false를 반환하도록하려는 경우입니다. 이에 대한 JavaScript 속기 :
startingNum = startingNum ? otherNum : 0
그러나 다음과 같이 표현할 수 있습니다.
startingNum = startingNum && otherNum
다른 사람들이 더 일반적인 답변을 찾고있는 경우를 대비하여 다른 시나리오를 다루고 싶었습니다.
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24? ???
innerWidth * 0.0375 > 24과 다르기 때문 if true입니다 innerWidth * 0.0375. 경우 속기에만 사용할 수 있습니다 expression to be evaluated와는 if true같은 값이다. 을 단축 할 수없는 이유도 마찬가지 x = someBoolean ? 'Heck yea!' : 'No way!'입니다.
Math.max(innerWidth * 0.0375, 24)
Math.max당신의 사용 사례에서 삼항 연산자보다 더 잘 작동합니다.
startingNum = startingNum ? otherNum : 1는 " 로 표현 될 수 있습니다 startingNum = otherNum || 1. 나는 이것을 테스트했다
삼항을 만들려면 :
boolean_condition ? true_result : false_result
자바 스크립트에서는 다음을 수행 할 수 있습니다.
(boolean_condition && true_result ) || false_result;
예:
(true && 'green') || 'red';
=> "green"
(false && 'green') || 'red';
=> "red"
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24가 될거야 (innerWidth * 0.0375 > 24 && innerWidth * 0.0375) || 24?? 속기가 있으므로 innerWidth * 0.0375변수에 할당하는 것 외에 반복 할 필요가 없습니까 ???
Math.max( innerWidth * 0.0375 , 24 )우아하게 작동합니다. 보다 일반적인 경우에는 변수를 생성하는 것보다 가독성을 향상시키는 'somethingifiedInnerWidth'와 같은 설명적인 메서드를 생성하는 것이 좋습니다. 어떤 경우에는 (그 설명적인 이름의) 변수를 갖는 것이 더 읽기 쉬울 것이지만, 미래에는 '왜 이것이 곱해 지는가?'라는 질문이 나올 것입니다. 제기되지 않습니다.
Math.max. 매우 우아한 솔루션 !!