자바스크립트에서 빈 문자열은 항상 부울로 거짓입니까?
자바스크립트로,
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
설명:근본적으로, 그들의 작전이==
다른 종류를 가지고 있고, 자바스크립트는 그들의 값에 따라 숫자로 변환하려고 노력하고, (표준이 ToNumber와 ToPrimitive라고 부르는 연산을 사용하여) 내부적으로 적용합니다.===
. 하지만 당신이 사용할 때.===
직접적으로 유형이 변환되지 않으므로 문자열을 부울과 비교하는 것은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
'programing' 카테고리의 다른 글
Azure App Service에서 끔찍한 성능 - Wordpress (0) | 2023.10.05 |
---|---|
WooCommerce 카트 항목 이름 변경 (0) | 2023.09.25 |
jquery에서 wait () 아니면 sleep () 기능? (0) | 2023.09.25 |
어떻게 두 개의 다른 컴퓨터에 있는 같은 파일이 다른 결과를 줄 수 있습니까? (0) | 2023.09.25 |
JQuery / JavaScript와 연결할 메일 호출 / 클릭 (0) | 2023.09.25 |