[javascript] 자바 스크립트는 정의되지 않은 경우 변수를 설정

자바 스크립트 변수를 테스트 한 다음 정의되지 않은 경우 변수를 정의 할 수는 있지만 말할 방법이 없습니다.

var setVariable = localStorage.getItem ( 'value') || 0;

훨씬 더 분명한 방법으로 보입니다. 다른 언어로 보았을 것입니다.



답변

예, 그렇게 할 수는 있지만 실제로는 undefined 와 반대로 검색 된 값이 false 인 경우 기본값을 지정합니다 . 따라서에만 일치하지 않을 뿐만 아니라 , , , , (하지만 하지 ).undefinednullfalse0NaN"" "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 합체 경우 운영자, 당신은 기본 값을 설정할 수 있습니다 valuenull 또는 정의되지 않은입니다.

const setVariable = localStorage.getItem('value') ?? 0;

그러나 Nullish 통합 연산자는 0and 같은 다른 유형의 잘못된 값에 대한 기본값을 반환하지 않습니다 ''.

운영자에 대한 브라우저 지원은 제한되어 있습니다. caniuse 의 데이터에 따르면 , 2020 년 4 월 기준으로 브라우저의 48.34 % 만 지원됩니다. Node.js 지원은 버전 14추가되었습니다 .


답변

FP ( Functional Programming ) 팬이라면 RamdadefaultTo 라는 깔끔한 도우미 기능을 가지고 있습니다 .

용법:

const result = defaultTo(30)(value)

undefined부울 값을 처리 할 때 더 유용 합니다.

const result2 = defaultTo(false)(dashboard.someValue)


답변

var setVariable = (typeof localStorage.getItem('value') !== 'undefined' && localStorage.getItem('value')) || 0;