찾다
웹 프론트엔드JS 튜토리얼실제 세계의 자동 유형 변환

Automatic Type Conversion In The Real World

코어 포인트

JavaScript의 자동 유형 변환은 다른 상황에서 장점이자 단점입니다. 핵심 함수로서, 연산자 또는 문이 특정 데이터 유형을 기대할 때 데이터를 예상 유형으로 변환합니다.

변환 결과에 따르면 JavaScript 값을 "True 값"또는 "False 값"이라고합니다. 6 가지 오용 값이 있습니다 : , ,
    ,
  • ,
  • , (빈 문자열) 및 false 유형 변환이 어떻게 평가에 영향을 미치는지 신중하게 고려해야합니다. 예를 들어, 선택적 매개 변수의 기본값을 정의 할 때는 고장을 방지하기 위해 알려진 데이터의 진실을 보장해야합니다. undefined 를 사용하는 명시 적 테스트는 항상 안전하지만 자동 유형 변환을 사용하는 것은 파일이 더 빨리로드되고 대역폭을 적게 사용하므로 파일 크기 고려 사항에 도움이됩니다. 그러나 프로그래밍 언어가 어떻게 유형 변환을 처리하는지 이해하는 것이 예기치 않은 결과를 피하기 위해 중요합니다. null 0 JavaScript에서 흔한 표현이 있지만 일부 프로그래밍 순수 주의자들은 그들이 결코 좋은 생각이 아니라고 말할 것입니다. 이러한 표현은 공통적으로 가지고있는 것은 자동 유형 변환, 즉 JavaScript의 핵심 기능에 의존한다는 것입니다. 이는 상황과 관점에 따라 유리하고 단점입니다. "" 이 기사에서는이 두 표현에 특별한주의를 기울이고 어떤 경우에는 좋은 아이디어이며 좋은 아이디어가 아닌 것을 고려하고 싶습니다. NaN 첫 번째 표현식은 간단한 조건입니다 :
  • 두 번째 표현식은 선택적 값을 가진 가변 할당입니다.
  • 두 예제 모두에서 부울이라면, 표현식은 간단합니다. 에, 그렇지 않으면 typeof
  • 를 할당합니다.
그러나 단순한 부울 값이 아니라면

가 객체, 문자열 또는 인 경우 어떻게해야합니까?

가 다른 데이터 유형이라면 어떻게됩니까? 이러한 표현식이 어떻게 계산되는지 이해하려면 JavaScript가 데이터 유형을 자동으로 변환하는 방법을 이해해야합니다.

자동 유형 변환

javaScript는 "느슨하게 입력 된"언어입니다. 즉, 연산자 또는 명령문이 특정 데이터 유형을 기대할 때마다 JavaScript는 자동으로 데이터를 해당 유형으로 변환 함을 의미합니다. 첫 번째 예제에서

문장은 부울 값을 기대하므로 괄호 안에 정의 된 내용은 부울 값으로 변환됩니다. 및 명령문에 대해서도 마찬가지입니다. if() 그러한 전환의 결과 (예 : 참 또는 거짓)에 따라 JavaScript 값을 종종 "true"또는 "false 값"이라고합니다. 그것을 이해하는 가장 쉬운 방법은 다음과 같습니다. 값이 잘못된 값으로 알려져 있지 않으면, 값은 사실

six 거짓 값이 있습니다.

(물론!)
  • false
  • (숫자 0) (빈 문자열) undefined (비 번호)
  • 주목할만한 예외는 "0"(String Zero) 및 모든 유형의 객체입니다 - 실제 값 - 여기에는 ALL
  • 기본 생성자가 포함되며, 이는 null 계산 결과를 의미합니다! (약간 혼란 스럽지만 실제로는 그런 기본 값을 만들 필요가 없습니다.)
  • . 참고 : 두 가지 잘못된 값을 비교한다고해서 두 가지 값이 모두 잘못된 값이더라도 ()와 같이 기대할 수있는 결과가 항상 생성되는 것은 아닙니다. 평등 평가가 어떻게 작동하는지 결정하는 몇 가지 복잡한 알고리즘이 있으며,이를 논의하는 것은이 기사의 범위를 벗어납니다. 그러나 자세한 내용에 관심이 있으시면 ECMAScript 5.1에서 추상 평등 비교 알고리즘을 확인할 수 있습니다.
  • 0 조건부 바로 가기
  • 예제는 처음에 보여준 예는 표현을 부울 값으로 변환합니다. 객체는 항상 true로 평가되고 ""가 False로 평가되므로 그러한 조건을 사용하여 DOM을 테스트 할 수 있습니다. 요소의 존재 :
  • DOM 사양에 존재하지 않는 요소가 반환해야하기 때문에 DOM 요소를 처리 할 때 항상 안정적으로 작동합니다.
  • 그러나 다른 상황은이 예와 같이 명확하지 않습니다. NaN 이러한 조건은 종종 foo 매개 변수가 "
  • 로 정의되면 "를 나타내는 데 사용되지만 실패를 유발할 수있는 몇 가지 상황이 있습니다. 예를 들어, 부울 값 이거나 빈 문자열 인 경우

    가 이미 정의 된 경우에도 조건부 코드가 실행되지 않습니다. 우리가 원하는 것은 이것입니다 : 정의되지 않은 매개 변수 (및 기타 변수)의 데이터 유형은 ""입니다. 따라서 비교기를 사용하여 매개 변수의 데이터 유형을 테스트 할 수 있으며 가 완전히 정의되면 항상 조건이 전달됩니다. 물론, 표현식은 여전히 ​​부울 값을 계산하고 있지만, 그것이 계산하는 부울 값은 new Boolean(false) 표현의 결과입니다.

    할당 바로 가기 처음에 보여준 두 번째 예제는 논리 연산자를 사용하여 변수에 할당되어야하는 두 값 중 어느 것을 결정합니다. null != false 논리 연산자는 부울 값을 반환하지 않지만 여전히

    부울 값을 기대하므로 전환 및 계산이 내부적으로 발생합니다. 가 true로 평가되면 의 값이 반환됩니다. 이것은 매우 유용합니다. 이 표현식은 일반적으로 이벤트 처리기에서 볼 수 있으며 지원되는 모델을 기반으로 이벤트 매개 변수를 정의하는 데 사용됩니다.

    따라서
    if (foo) {
    }
    는 부울 값으로 계산됩니다. 이벤트 매개 변수 모델이 지원되는 경우 (이벤트 객체), 그렇지 않으면 잘못된 값 (); 그렇지 않으면 <.>를 반환합니다.

    동일한 유형의 표현식은 종종 이벤트 속성을 할당하는 데 사용되며 각 가능성을 평가하여 지원되는 속성을 찾습니다. e 따라서 따라서, 이러한 각 참조는 차례로 (왼쪽에서 오른쪽으로) 평가되며 첫 번째 계산은 사실입니다. 첫 번째 사례는 표준 모델을 처리하고 두 번째 사례는 인터넷 익스플로러를위한 것이고 세 번째 사례는 인터넷 익스플로러 (undefined 속성없이) 이벤트가 트리거 될 수있는 인터넷 익스플로러입니다. e 그러나 그러나이 표현은 데이터의 진실을 알지 못하고 실패하기 쉽다. 예를 들어, 또 다른 공통 사용 사례는 선택적 매개 변수의 기본값을 정의하는 것이지만 이것은 좋지 않습니다 : . window.event 지금, 당신이 확실하다면, 당신이 확실하다면,

    는 항상

    또는
    var x = foo || bar;
    이며, 빈 문자열을

    로 취급 해야하는 경우 표현식은 안전합니다. 그러나 그렇지 않은 경우, 예를 들어보다 정확한 컨텐츠로 재정의해야합니다. srcElement "문자열"에 대해 유형을 테스트함으로써 다양한 사례 -

    정의되지 않은 사례와 비 스트링 값으로 잘못 정의되는 경우를 처리 할 수 ​​있습니다. 이 경우 빈 줄을 유효한 입력으로 허용하지만 빈 문자열을 제외하려면 두 번째 조건을 추가해야합니다.

    문제를 일으킬 수있는 놀랍도록 미묘한 상황이 있습니다. 예를 들어 입력 타임 스탬프가 선택적으로 정의되지 않는 한 UNIX 타임 스탬프를 생성하는 날짜 함수가있을 수 있습니다.

    입력이 0이면 0은 오류 값이지만 유효한 타임 스탬프이기 때문에 실패합니다.
    var element = document.getElementById("whatever");
    if (element) {
      // 元素存在
    } else {
      // 元素不存在
    }

    일반 원칙 foo 이 모든 것에서 배운 일반적인 교훈은 간단합니다 - 유형 변환이 어떻게 평가에 영향을 미치는지 생각하고 우리가 겪는 함정에 빠지지 않도록주의하십시오. 적절한주의와주의로 자동 유형 변환을 사용하여 적절한 경우 조건과 논리 표현을 단축 할 수 있습니다. 그러나 이것은 질문을 제기합니다. 우리가 를 사용하는 것이 항상 안전하다는 것을 알고 있다면 자동 유형 변환에 의존하는 것이 때때로 안전하지 않다는 것을 알고 있다면 undefined 항상 undefined가 명확하지 않습니까? 물론, 문법이 짧은 문법을 선호하는 이유가 단순히 더 빠르게 입력되기 때문입니다. 이것은 게으르고 조잡한 이유입니다.

    그러나 진실은 JavaScript가 일반적으로 공개 네트워크를 통해 실행되며,이 경우 파일 크기가 중요합니다. 작은 파일이 더 빨리로드되고 대역폭을 적게 사용하며 작은 구문 단축키가 실제로 축적 될 수 있습니다.
    function doStuff(foo) {
      if (foo) {
        ...
      }
    }
    더 짧은 표현을 사용하는 것은 최적화 자체가 아니라 언어 기능을 최대한 활용하는 프로그래밍 스타일 일뿐입니다.

    (원본 텍스트의 FAQ 섹션은이 부분의 내용이 기사의 주제와 약하게 관련되어 있고 더 길기 때문에 여기서 생략되므로 의사 원리 작품을 유지하는 데 적합하지 않습니다).

위 내용은 실제 세계의 자동 유형 변환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
JavaScript의 역할 : 웹 대화식 및 역동적 인 웹JavaScript의 역할 : 웹 대화식 및 역동적 인 웹Apr 24, 2025 am 12:12 AM

JavaScript는 웹 페이지의 상호 작용과 역학을 향상시키기 때문에 현대 웹 사이트의 핵심입니다. 1) 페이지를 새로 고치지 않고 콘텐츠를 변경할 수 있습니다. 2) Domapi를 통해 웹 페이지 조작, 3) 애니메이션 및 드래그 앤 드롭과 같은 복잡한 대화식 효과를 지원합니다. 4) 성능 및 모범 사례를 최적화하여 사용자 경험을 향상시킵니다.

C 및 JavaScript : 연결이 설명되었습니다C 및 JavaScript : 연결이 설명되었습니다Apr 23, 2025 am 12:07 AM

C 및 JavaScript는 WebAssembly를 통한 상호 운용성을 달성합니다. 1) C 코드는 WebAssembly 모듈로 컴파일되어 컴퓨팅 전력을 향상시키기 위해 JavaScript 환경에 도입됩니다. 2) 게임 개발에서 C는 물리 엔진 및 그래픽 렌더링을 처리하며 JavaScript는 게임 로직 및 사용자 인터페이스를 담당합니다.

웹 사이트에서 앱으로 : 다양한 JavaScript 애플리케이션웹 사이트에서 앱으로 : 다양한 JavaScript 애플리케이션Apr 22, 2025 am 12:02 AM

JavaScript는 웹 사이트, 모바일 응용 프로그램, 데스크탑 응용 프로그램 및 서버 측 프로그래밍에서 널리 사용됩니다. 1) 웹 사이트 개발에서 JavaScript는 HTML 및 CSS와 함께 DOM을 운영하여 동적 효과를 달성하고 jQuery 및 React와 같은 프레임 워크를 지원합니다. 2) 반응 및 이온 성을 통해 JavaScript는 크로스 플랫폼 모바일 애플리케이션을 개발하는 데 사용됩니다. 3) 전자 프레임 워크를 사용하면 JavaScript가 데스크탑 애플리케이션을 구축 할 수 있습니다. 4) node.js는 JavaScript가 서버 측에서 실행되도록하고 동시 요청이 높은 높은 요청을 지원합니다.

Python vs. JavaScript : 사용 사례 및 응용 프로그램 비교Python vs. JavaScript : 사용 사례 및 응용 프로그램 비교Apr 21, 2025 am 12:01 AM

Python은 데이터 과학 및 자동화에 더 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 더 적합합니다. 1. Python은 데이터 처리 및 모델링을 위해 Numpy 및 Pandas와 같은 라이브러리를 사용하여 데이터 과학 및 기계 학습에서 잘 수행됩니다. 2. 파이썬은 간결하고 자동화 및 스크립팅이 효율적입니다. 3. JavaScript는 프론트 엔드 개발에 없어서는 안될 것이며 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축하는 데 사용됩니다. 4. JavaScript는 Node.js를 통해 백엔드 개발에 역할을하며 전체 스택 개발을 지원합니다.

JavaScript 통역사 및 컴파일러에서 C/C의 역할JavaScript 통역사 및 컴파일러에서 C/C의 역할Apr 20, 2025 am 12:01 AM

C와 C는 주로 통역사와 JIT 컴파일러를 구현하는 데 사용되는 JavaScript 엔진에서 중요한 역할을합니다. 1) C는 JavaScript 소스 코드를 구문 분석하고 추상 구문 트리를 생성하는 데 사용됩니다. 2) C는 바이트 코드 생성 및 실행을 담당합니다. 3) C는 JIT 컴파일러를 구현하고 런타임에 핫스팟 코드를 최적화하고 컴파일하며 JavaScript의 실행 효율을 크게 향상시킵니다.

자바 스크립트 행동 : 실제 예제 및 프로젝트자바 스크립트 행동 : 실제 예제 및 프로젝트Apr 19, 2025 am 12:13 AM

실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.

JavaScript 및 웹 : 핵심 기능 및 사용 사례JavaScript 및 웹 : 핵심 기능 및 사용 사례Apr 18, 2025 am 12:19 AM

웹 개발에서 JavaScript의 주요 용도에는 클라이언트 상호 작용, 양식 검증 및 비동기 통신이 포함됩니다. 1) DOM 운영을 통한 동적 컨텐츠 업데이트 및 사용자 상호 작용; 2) 사용자가 사용자 경험을 향상시키기 위해 데이터를 제출하기 전에 클라이언트 확인이 수행됩니다. 3) 서버와의 진실한 통신은 Ajax 기술을 통해 달성됩니다.

JavaScript 엔진 이해 : 구현 세부 사항JavaScript 엔진 이해 : 구현 세부 사항Apr 17, 2025 am 12:05 AM

보다 효율적인 코드를 작성하고 성능 병목 현상 및 최적화 전략을 이해하는 데 도움이되기 때문에 JavaScript 엔진이 내부적으로 작동하는 방식을 이해하는 것은 개발자에게 중요합니다. 1) 엔진의 워크 플로에는 구문 분석, 컴파일 및 실행; 2) 실행 프로세스 중에 엔진은 인라인 캐시 및 숨겨진 클래스와 같은 동적 최적화를 수행합니다. 3) 모범 사례에는 글로벌 변수를 피하고 루프 최적화, Const 및 Lets 사용 및 과도한 폐쇄 사용을 피하는 것이 포함됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.