자바 스크립트 변수를 테스트 한 다음 정의되지 않은 경우 변수를 정의 할 수는 있지만 말할 방법이 없습니다.
var setVariable = localStorage.getItem ( 'value') || 0;
훨씬 더 분명한 방법으로 보입니다. 다른 언어로 보았을 것입니다.
답변
예, 그렇게 할 수는 있지만 실제로는 undefined 와 반대로 검색 된 값이 false 인 경우 기본값을 지정합니다 . 따라서에만 일치하지 않을 뿐만 아니라 , , , , (하지만 하지 ).undefined
null
false
0
NaN
""
"0"
변수가 엄격 할 경우에만 기본값으로 설정 undefined
하려면 가장 안전한 방법은 다음과 같습니다.
var x = (typeof x === 'undefined') ? your_default_value : x;
최신 브라우저에서는 실제로 작성하는 것이 안전합니다.
var x = (x === undefined) ? your_default_value : x;
그러나 undefined
정의 된 값을 가진 변수를 선언 할 수있는 이전 브라우저에서는이를 파괴 하여 테스트에 실패 할 수 있습니다.
답변
2018 ES6 답변은 다음과 같습니다.
return Object.is(x, undefined) ? y : x;
변수 x가 정의되지 않은 경우 변수 y를 반환합니다. 그렇지 않으면 변수 x가 정의 된 경우 변수 x를 반환합니다.
답변
여러 곳에서 “정의되지 않은 경우 변수를 설정”해야했습니다. @Alnitak 답변을 사용하여 함수를 만들었습니다. 잘만되면 그것은 누군가를 돕는다.
function setDefaultVal(value, defaultValue){
return (value === undefined) ? defaultValue : value;
}
용법:
hasPoints = setDefaultVal(this.hasPoints, true);
답변
typeof
대신 확인 하는 것이 더 논리적 인 것 같습니다 undefined
. 0
정의되지 않은 경우 var을 설정하면 숫자가 필요하다고 가정합니다 .
var getVariable = localStorage.getItem('value');
var setVariable = (typeof getVariable == 'number') ? getVariable : 0;
이 경우 getVariable
숫자 (문자열, 객체 등)가 아닌 경우 setVariable은0
답변
ES2020 답변
으로 Nullish 합체 경우 운영자, 당신은 기본 값을 설정할 수 있습니다 value
null 또는 정의되지 않은입니다.
const setVariable = localStorage.getItem('value') ?? 0;
그러나 Nullish 통합 연산자는 0
and 같은 다른 유형의 잘못된 값에 대한 기본값을 반환하지 않습니다 ''
.
운영자에 대한 브라우저 지원은 제한되어 있습니다. caniuse 의 데이터에 따르면 , 2020 년 4 월 기준으로 브라우저의 48.34 % 만 지원됩니다. Node.js 지원은 버전 14 에 추가되었습니다 .
답변
FP ( Functional Programming ) 팬이라면 Ramda 는 defaultTo 라는 깔끔한 도우미 기능을 가지고 있습니다 .
용법:
const result = defaultTo(30)(value)
undefined
부울 값을 처리 할 때 더 유용 합니다.
const result2 = defaultTo(false)(dashboard.someValue)
답변
var setVariable = (typeof localStorage.getItem('value') !== 'undefined' && localStorage.getItem('value')) || 0;