함수 앞에 느낌표(!)를 추가하면 어떻게 되나요?
예를 들어 다음 코드는!function(){alert('iifksp')}() // true콘솔에서 실행한 후 얻은 값이 true인 이유를 이해하기 쉽습니다. 이 익명 함수를 호출하기 위해 괄호를 추가하는 것이 더 익숙할 수도 있습니다.
(function(){alert('iifksp')})() // true또는
(function(){alert('iifksp')}()) // true위의 두 가지에서 괄호의 위치는 다르지만 효과는 완전히 동일합니다. 그럼 많은 분들이 이 느낌표 방식을 애용하게 만드는 장점은 무엇일까요? 문자 하나만 저장하는 것이라면 너무 불필요합니다. 100K 라이브러리라도 많은 공간을 절약할 수는 없습니다. 공간이 아니기 때문에 시간적 고려가 있을 수 있다는 의미이며, 성능에 대해서는 기사 마지막 부분에 언급되어 있습니다. 핵심 질문으로 돌아가서, 왜 이것이 가능할까요? 더욱 중요한 질문은 이것이 왜 필요한가입니다. 사실 괄호든 느낌표든 전체 명령문이 합법적으로 할 수 있는 일은 단 하나,
함수 선언문을 표현식으로 바꾸는 것뿐입니다.
function a(){alert('iifksp')} // undefined이것은 함수 선언입니다. 이러한 선언 뒤에 직접 호출하기 위해 괄호를 추가하면 파서가 자연스럽게 이를 이해하지 못하고 오류를 보고하게 됩니다.
function a(){alert('iifksp')}() // SyntaxError: unexpected_token이러한 코드는 함수 선언과 함수 호출을 이렇게 혼동하기 때문입니다. . 선언된 함수 a는 a();로 호출되어야 합니다. 하지만 괄호는 다릅니다. 파서는 함수를 더 이상 함수 선언으로 처리하지 않고
함수 표현식으로 처리하므로 프로그램이 실행될 때만 처리할 수 있습니다. 함수 a가 존재할 때만 액세스할 수 있습니다.
그래서,함수 선언과 함수 표현식을 명확하게 하는 모든 메소드는 파서에서 올바르게 인식될 수 있습니다. 예:
var i = function(){return 10}(); // undefined 1 && function(){return true}(); // true 1, function(){alert('iifksp')}(); // undefined할당, 논리, 심지어 쉼표까지, 다양한
연산자는 이것이 함수 선언이 아니라 함수 표현식임을 파서에게 알릴 수 있습니다. 게다가 함수에 대한 단항 연산은 모호성을 제거하는 가장 빠른 방법으로 간주될 수 있습니다. 느낌표는 반환 값에 관심이 없다면 다음과 같은 단항 연산도 유효합니다. !function(){alert('iifksp')}() // true
+function(){alert('iifksp')}() // NaN
-function(){alert('iifksp')}() // NaN
~function(){alert('iifksp')}() // -1
키워드를 사용할 수 있습니다. 잘 했어요:
void function(){alert('iifksp')}() // undefined new function(){alert('iifksp')}() // Object delete function(){alert('iifksp')}() // true
마지막으로 대괄호는 같은 일을 합니다. 함수 전체를 둘러싸는 것이 아니라 명확하게 하는 것이 실제 작업입니다. 따라서 대괄호가 선언 주위에 있거나 전체 함수가 둘러싸이든 모두입니다. 법적:
(function(){alert('iifksp')})() // undefined (function(){alert('iifksp')}()) // undefined
사실 제가 이야기하고 있는 것은 가장 기본적인 개념 중 일부인 명령문, 표현식, 표현식 명령문입니다. 이러한 개념은 포인터 및 포인터 변수만큼 혼동을 일으키기 쉽습니다. 이런 종류의 혼란은 프로그래밍에 표현적인 영향을 미치지는 않지만 언제든지 머리를 아프게 할 수 있는 걸림돌입니다.
마지막으로 성능에 대해 논의해 보겠습니다. 저는 jsperf에서 테스트를 만들었습니다:
http://jsperf.com/js-funcion-expression-speed. 이 테스트는 다양한 브라우저로 액세스할 수 있으며 테스트를 실행하여 결과를 볼 수 있습니다. 아래 표와 같이 결과도 나열해봤습니다(비교적 열악해서 테스트 구성이 좀 쑥스럽긴 한데 할 수 있는게 없네요 : 펜티엄 듀얼코어 1.4G, 2G 메모리, win7 Enterprise Edition)
다른 방식으로 생성되는 것을 볼 수 있습니다. 결과는 동일하지 않으며 브라우저마다 크게 다릅니다.
하지만 여전히 많은 공통점을 찾을 수 있습니다.
새로운 방법은 항상 가장 느립니다- 이는 당연한 문제입니다. 다른 측면에서 많은 차이점은 사실 크지 않지만, 한 가지 확실한 것은 느낌표가 가장 이상적인 선택은 아니라는 것입니다. 반면에 전통적인 괄호, 항상 테스트에서 매우 빠르게 수행되었습니다. 대부분의 경우 느낌표보다 빠릅니다. 따라서 우리가 일반적으로 사용하는 방법에는 문제가 없으며 최적이라고 할 수도 있습니다. 더하기 및 빼기 기호는 Chrome에서 놀라운 성능을 발휘하며 일반적으로 다른 브라우저에서도 빠르며 느낌표보다 더 잘 작동합니다. 물론 이는 단순한 테스트일 뿐이며 문제를 설명할 수는 없습니다. 그러나 일부 결론은 의미가 있습니다. 괄호와 더하기 및 빼기 기호가 최적입니다.
그런데 왜 그렇게 많은 개발자가 느낌표를 좋아할까요? 이는 단지 습관의 문제일 뿐, 그 사이의 장단점은 완전히 무시할 수 있다고 생각합니다. 코딩 스타일에 익숙해지면 이 규칙은 프로그램을 혼란스러운 것에서 읽기 쉬운 것으로 바꿔줄 것입니다. 느낌표에 익숙해지면 괄호보다 가독성이 더 좋다는 점을 인정해야 합니다. 읽을 때 괄호 연결에 신경 쓸 필요도 없고, 쓸 때 실수로 잊어버릴 일도 없어요 -
위 내용은 js 함수와 느낌표의 관계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다. 먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까? 멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.

이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.

JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

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

WebStorm Mac 버전
유용한 JavaScript 개발 도구
