> 백엔드 개발 > PHP 튜토리얼 > JavaScript와 PHP의 진실과 거짓의 차이점

JavaScript와 PHP의 진실과 거짓의 차이점

Patricia Arquette
풀어 주다: 2025-01-18 20:14:16
원래의
898명이 탐색했습니다.

The Differences in Truthiness and Falsiness in JavaScript vs PHP

조건문은 모든 프로그래밍 언어의 기본입니다. 그러나 JavaScript와 PHP가 "진실성"과 "거짓성"을 처리하는 방식(조건부에서 값이 참인지 거짓인지 결정)은 크게 다릅니다. 이 기사에서는 빈 배열과 객체에 초점을 맞춰 이러한 차이점을 살펴보고 웹 개발자에게 미치는 실질적인 영향을 살펴봅니다.

자바스크립트의 참과 거짓

진실성에 대한 JavaScript의 접근 방식은 많은 개발자에게 PHP보다 덜 직관적입니다. 여러 값을 "거짓"으로 간주합니다.

<code class="language-javascript">const value1 = false;     // Boolean false
const value2 = 0;         // Number zero
const value3 = "";        // Empty string
const value4 = null;      // null
const value5 = undefined; // undefined
const value6 = NaN;       // Not a Number</code>
로그인 후 복사

이는 Vue.js와 같은 프레임워크의 반응형 참조에도 적용됩니다.

<code class="language-javascript">const ref1 = ref(false);
const ref2 = ref(0);
const ref3 = ref("");
const ref4 = ref(null);
const ref5 = ref(undefined);
const ref6 = ref(NaN);</code>
로그인 후 복사

놀랍게도 빈 배열과 객체는 "진실한" 것으로 간주됩니다.

<code class="language-javascript">const value7 = [];        // Empty array
const value8 = {};        // Empty object
const value9 = "0";       // String "0"</code>
로그인 후 복사

기억 설명

JavaScript에서 빈 배열과 객체는 유효한 메모리 참조를 나타내기 때문에 진실입니다. 비어 있음에도 불구하고 여전히 메모리 공간을 차지합니다.

<code class="language-javascript">// Arrays and Objects are memory references
const emptyArray = [];    // Valid memory reference
const emptyObject = {};   // Valid memory reference

Boolean([])  // true
Boolean({})  // true
Boolean(0)         // false
Boolean("")        // false
Boolean(null)      // false
Boolean(undefined) // false</code>
로그인 후 복사

이 디자인 선택은 빈 배열과 객체가 여전히 사용 가능한 데이터 구조라는 사실에서 비롯됩니다. 빈 컨테이너에 대한 참조는 값이 없다는 것(null/정의되지 않음)과 다릅니다.

PHP의 접근 방식

PHP는 빈 데이터 구조를 '거짓'으로 처리하는 보다 간단한 접근 방식을 채택합니다. 이것이 JavaScript와의 주요 차이점입니다.

<code class="language-php">// Empty array is falsy
$emptyArray = [];
if (!$emptyArray) {
    echo "Empty array is false"; // This will print
}

// Empty object is also falsy
$emptyObject = new stdClass();
if (!$emptyObject) {
    echo "Empty object is false"; // This will print
}</code>
로그인 후 복사

PHP의 다른 거짓 값으로는 false, 0, 0.0, "", null 및 빈 배열이 있습니다.

JavaScript의 명시적 빈 검사

JavaScript에서 빈 배열이나 객체를 안정적으로 확인하려면 명시적인 확인이 필요합니다.

<code class="language-javascript">//For an array
[].length === 0              // true

//For an object
Object.keys({}).length === 0 // true</code>
로그인 후 복사

반응적 참조:

<code class="language-javascript">const arrayRef = ref([]);
const objectRef = ref({});

if (arrayRef.value.length === 0) {
    console.log('Array is empty');
}

if (Object.keys(objectRef.value).length === 0) {
    console.log('Object is empty');
}</code>
로그인 후 복사

PHP의 빈 수표

PHP의 더 간단한 접근 방식으로 조건부 논리가 더 깔끔해집니다.

<code class="language-php">$emptyArray = [];
$emptyObject = new stdClass();

if (!$emptyArray) {
    echo "This will execute because empty arrays are falsy\n";
}

if (!$emptyObject) {
    echo "This will execute because empty objects are falsy\n";
}</code>
로그인 후 복사

PHP의 empty() 기능

PHP의 empty() 기능은 정의되지 않은 변수를 포함하여 비어 있는지 확인하는 편리한 방법을 제공합니다.

<code class="language-php">empty("");        // true
empty(0);        // true
empty([]);       // true
empty(new stdClass()); // true</code>
로그인 후 복사

empty()은 함수가 아닌 언어 구조이므로 콜백으로 사용할 수 없습니다. isset()은 변수 존재 여부를 확인하는 데 유용하지만 배열이 아닌 항목에 잘못 사용하면 경고가 발생할 수 있습니다.

실용적 시사점

대조적인 접근 방식에는 다양한 코딩 스타일이 필요합니다. JavaScript는 명시적인 공백 검사를 요구하므로 잠재적으로 코드의 장황함은 증가하지만 명확성은 향상됩니다. PHP의 접근 방식은 간결한 코드를 제공하지만 특정 빈 값 유형에 대한 추가 검사가 필요할 수 있습니다. 개발자는 두 언어로 작업할 때, 특히 크로스 플랫폼 프로젝트에서 이러한 차이점을 염두에 두어야 합니다.

이러한 이해는 JavaScript와 PHP를 연결하는 개발자, 특히 Laravel과 React 또는 Vue.js와 같은 프레임워크를 사용하는 개발자에게 중요합니다. 이러한 미묘한 차이를 주의 깊게 고려하면 안정적이고 예측 가능한 코드 동작이 보장됩니다.

위 내용은 JavaScript와 PHP의 진실과 거짓의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿