진실 또는 거짓을 명시 적 부울로 변환


100

변수가 있습니다. 그것을라고 부르 자 toto.

이것은 toto설정할 수 있습니다 undefined, null문자열, 또는 객체.

toto가 데이터로 설정 되어 있는지 확인하고 싶습니다. 즉, 문자열이나 객체로 설정되고 undefinednor가 아닌 null다른 변수에 해당 부울 값을 설정 한다는 의미입니다 .

나는 !!다음과 같은 구문을 생각했다 .

var tata = !!toto; // tata would be set to true or false, whatever toto is.

첫 번째 !falsetoto가 undefinedor nulland trueelse 이면 설정되고 두 번째는 반전됩니다.

하지만 조금 이상해 보입니다. 이 작업을 수행하는 더 명확한 방법이 있습니까?

나는 이미이 질문 을 보았지만 if명령문 에서 확인하는 것이 아니라 변수에 값을 설정하고 싶습니다 .


10
이 질문은 중복 된 것으로 표시되지만 다른 질문 stackoverflow.com/questions/263965/…를 보면 상당히 다릅니다. 그들은 전혀 중복되지 않습니다
Sam

@Sam 죄송합니다.이 중복을 확인했습니다. 다른 질문에 대해서는 몰랐지만 문제가 해결되었습니다.
Aracthor

11
@Aracthor stackoverflow.com/questions/263965/… 는 "true"와 "false"라는 단어 만 포함 된 문자열을 부울 대응 문자로 변환 하기 때문에 중복되지 않습니다 . 이 질문은 진실인지 거짓인지에 따라 모든 변수를 부울로 변환하는 것에 관한 것입니다.
Alan McBee-MSFT

답변:


158

예, 언제든지 다음을 사용할 수 있습니다.

var tata = Boolean(toto);

다음은 몇 가지 테스트입니다.

for (var value of [0, 1, -1, "0", "1", "cat", true, false, undefined, null]) {
    console.log(`Boolean(${typeof value} ${value}) is ${Boolean(value)}`);
}

결과 :

Boolean(number 0) is false
Boolean(number 1) is true
Boolean(number -1) is true
Boolean(string 0) is true
Boolean(string 1) is true
Boolean(string cat) is true
Boolean(boolean true) is true
Boolean(boolean false) is false
Boolean(undefined undefined) is false
Boolean(object null) is false

75
참고로, Boolean ( "false")는 아마도 거짓이되기를 원할 때 참입니다.
Sterling Bourne

45
도대체 왜 "false"문자열을 거짓으로 만들까요? D : 심지어 PHP는하지 않습니다
Danon

1
그는 의미 Boolean("false")합니다.
Robo Robok

2
@NoahDavid true를 반환합니다. 캐스트되는 유일한 문자열 false은 빈 문자열 ( "")입니다.
Robo Robok

6
바로 그거죠. 그렇기 때문에 따옴표로 묶여서 문자열로 해석되는 경우 "false"라는 문구를 사용할 때주의해야합니다. false로 캐스팅한다고 생각할 수 있지만 실제로는 true를 반환하므로 원래 경고입니다.
Sterling Bourne

1

Boolean(obj)또는 !!obj을 사용 truthy/falsy하여 true/false.

var obj = {a: 1}
var to_bool_way1 = Boolean(obj) // true
var to_bool_way2 = !!obj // true
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.