programing

자바스크립트에서 빈 문자열은 항상 부울로 거짓입니까?

minimums 2023. 9. 25. 22:29
반응형

자바스크립트에서 빈 문자열은 항상 부울로 거짓입니까?

자바스크립트로,

var a = '';
var b = (a) ? true : false;

var b로 설정됩니다.false.

이것은 믿을 수 있는 정의된 행동입니까?

예. 자바스크립트는 ECMAscript의 방언으로, ECMAscript 언어 사양은 다음과 같은 동작을 명확하게 정의합니다.

투불린

인수가 빈 String이면 결과가 거짓이고(길이가 0), 그렇지 않으면 결과가 참입니다.

http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf 에서 가져온 인용문

네. 다.false,0, 빈 줄''그리고."",NaN,undefined,그리고.null항상 다음과 같이 평가됩니다.false; 그 밖의 모든 것은true.

예를 들어, b는false평가한 후에(제 생각에 당신은 실수로true)

var a = '';
var b = (a) ? false : true;   // fixed!
console.log(b);               // => true

변태의b로 설정됩니다.true.

이것은 믿을 수 있는 정의된 행동입니까?

위에서 대답한 바와 같이, , 그것은 조건에서 빈 문자열의 정의된 동작입니다.if표현,||,&&,? :, ...). (표준에 따르면 내부 ToBoolean 연산이 적용되어야 합니다.)

비교에서 빈 문자열이 사용될 때(Truth, Equality JavaScript 참조), 결과가 거의 동일함에도 불구하고 평가가 다릅니다.

// conditional (note: evaluation to false prints false here!)
console.log('' ? true : false); // zero length     => false

// comparisons
console.log('' == true);        // +0 === 1        => false
console.log('' == false);       // +0 === +0       => true
console.log('' === true);       // different types => false
console.log('' === false);      // different types => false

설명:근본적으로, 그들의 작전이== 다른 종류를 가지고 있고, 자바스크립트는 그들의 에 따라 숫자로 변환하려고 노력하고, (표준이 ToNumberToPrimitive라고 부르는 연산을 사용하여) 내부적으로 적용합니다.===. 하지만 당신이 사용할 때.===직접적으로 유형이 변환되지 않으므로 문자열을 부울과 비교하는 것은false.

대략 자바스크립트 조건(ToBoolean)은 정의된, null이 아닌, 0이 아닌, 비어 있지 않은, 거짓이 아닌 (빈 문자열은...)을 테스트합니다.비어 있음, 숫자 -0 또는 +0은 ... 0, NaN은 정의된 숫자는 아니지만 빈 개체는 분명히 비어 있지 않음) 또는 내가 생각하는 것처럼 조건부 (참인) 것에 대한 테스트를 수행합니다.==피연산자의 명백하고 신중하게 변환(ToPrimitive, ToNumber)을 비교합니다.===정확한 동일성을 찾습니다.

if (X) {}        // is X a (true) thing?
if (X == Y) {}   // are the values of X and Y same-ish?
if (X === Y) {}  // are X and Y exactly the same?

Truth, Equality JavaScript에는 이러한 구분이 실제로 중요한 예가 더 있습니다.'0'true조건부(0이 아닌 길이, 또는 물건임)로, 그러나false일순간에==비교(이 0입니다).'1'는,true두 경우 모두(물건이고 0이 아닌 값을 가짐).

console.log('' ? true : false);   // zero length     => false
console.log('' == true);          // +0 === 1        => false
console.log('0' ? true : false);  // non-zero length => true
console.log('0' == true);         // +0 === 1        => false
console.log('1' ? true : false);  // non-zero length => true
console.log('1' == true);         //  1 === 1        => true

var b됩니다(으)로 됩니다.true은 빈 ' 값으로 되기 때문입니다 이것은 일부 다른 값들과 마찬가지로 빈 문자열이 자바스크립트에서 '거짓' 값으로 간주되기 때문입니다.

http://www.sitepoint.com/javascript-truthy-falsy/ 에서 잘못된 값을 확인하십시오.

false로 변환할 수 있는 식의 예로는 null, 0, 빈 문자열(") 또는 정의되지 않은 식이 있습니다.(MDN 참조)

네, 그 행동에 의지하시면 됩니다.

더 짧은 방법으로는 다음과 같습니다.

var b = !!a;

언급URL : https://stackoverflow.com/questions/8692982/in-javascript-is-an-empty-string-always-false-as-a-boolean

반응형