답변:
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
. 매우 우아한 솔루션 !!