웹 프론트엔드 JS 튜토리얼 javascript_javascript 기술의 익명 기능을 통해 몇 가지 간단하고 흥미로운 코드 조각을 분석합니다.

javascript_javascript 기술의 익명 기능을 통해 몇 가지 간단하고 흥미로운 코드 조각을 분석합니다.

May 16, 2016 pm 06:24 PM
javascript 익명 함수

1. 간단한 형태의 캡슐화 호출

코드 복사 코드는 다음과 같습니다.

var userName = function( ) { return "jeff wong" } ();
alert(userName);


위 코드는 매우 간단하므로 점차적으로 다음과 같이 나눌 수 있습니다. 쓰기:
코드 복사 코드는 다음과 같습니다.

var anonymousFunc = function() { return "jeff wong" }; // 익명 함수
var name = anonymousFunc(); //사람의 이름을 반환하려면 이 함수를 실행하세요.
alert(name)


2. New는 Function의 형태(대문자 Function)
코드 복사 코드는 다음과 같습니다.

var a = new Object();
var b = new Function()
//alert(typeof (a)) //object
//alert(typeof ( b)); //함수
alert(a); //[ object Object]
alert(b); //익명함수
//alert(a == b); 🎜>//alert(a === b); //false



보시다시피, 새로운 Object를 생성했고, 팝업되는 변수는 [object Object입니다. ], 그리고 new a Function(대문자로 표기된 Function), b가 팝업되면 익명 함수가 생성됩니다. b는 익명 함수이므로 당연히 다음 코드를 실행하여 추측을 검증할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
alert(b()); //정의되지 않음
alert(a()) //스크립트 오류로 인해 "함수 없음"이 표시됩니다.



3. 새로운 기능이 차이를 만들 수 있습니다(소문자 기능)
(1), 단순 빈 기능

코드 복사 코드는 다음과 같습니다.
var func = new function() { };alert(typeof (func));
alert(func); //[객체 객체]
//alert(func()); //스크립트 오류 func는 함수가 아닙니다.



실제로 위의 코드는 다음의 Write 메소드와 동일합니다.


function anonymousClass() { } //익명 클래스
var instance = new anonymousClass()
alert(typeof (instance));//object
alert(instance); [객체 객체]

[code]

(2) 이 함수에는 이해하기 어렵지 않은 반환 값이 있습니다. function() { return "jeff wong" };
alert( typeof (func))
alert(func)
//alert(func()); >



사실 위의 코드는 다음과 같이 작성하면 같습니다.



코드를 복사하세요
코드는 다음과 같습니다. functiononymousClass() { return "jeff wong" } //Anonymous classvar instance = new anonymousClass()alert; (typeof (인스턴스));//object
alert(instance); //[ object Object]



(3), 함수에는 여전히 반환 값이 있습니다. 메소드가 약간 다릅니다

다음 코드와 (2) 의 차이점에 주의하세요. 다음으로 집중하고 싶은 것은 약간 다른 쓰기 형식이기 때문입니다.




코드 복사
코드는 다음과 같습니다. var func = new function() { return new String("jeff wong") ; }; alert(typeof (func)); //객체 예상 alert(func); //여기에?!alert(func()); 🎜>


위 코드의 등가 형식은 여전히 ​​간단합니다.



코드 복사


코드는 다음과 같습니다.

실행해보고 결과를 보셨나요? 맞습니다. 세 번째 작성 방법에서는 func이나 인스턴스를 팝업할 때 예기치 않게 "jeff wong"이라는 문자열이 표시됩니다. (2)와 (3)의 코드를 잘 비교해 보면 return의 작성 방식이 약간 다른 점을 제외하면 두 코드는 거의 동일하므로 우리의 함수를 만드는 것이 new String의 형태임에는 의심의 여지가 없다는 것을 유추할 수 있습니다. 예상치 못한 효과를 생성합니다. 왜 이런 일이 발생합니까?

JavaScript에서는 new 표현식 뒤의 생성자가 기본 유형을 반환(반환)하는 한(반환이 없는 경우 실제로는 (1)과 같이 정의되지 않은 기본 유형을 반환함) (2) 쓰기 방법과 같이 new로 생성된 익명 객체가 반환되고, new 표현식 뒤의 생성자가 객체(Object), 함수(function), 배열(Array)과 같은 참조 객체를 반환하면; ) 등을 사용하면 반환된 참조 객체는 new로 생성된 익명 객체를 덮어씁니다. 이제 (3)의 쓰기를 분석해 보겠습니다. new String은 문자열 참조 객체를 구성하므로 new가 생성한 익명 객체를 포함하고 new String이 가리키는 참조 값은 "jeff wong"이므로 팝업은 다음과 같습니다. 불가피합니다. 현재 새 문자열에 의해 할당된 값입니다.

마지막으로 생각해 볼 질문을 남겨주세요.

코드 복사 코드는 다음과 같습니다.

var func = new function() { var str = new String("jeff wong");//다른 방법으로 작성하세요
// Alert(typeof (func)); //객체가 예상됩니다
alert(func); //여기서 결과가 어떻게 나올지 추측해 보세요.

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

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C++ 익명 함수의 사용법과 특징 C++ 익명 함수의 사용법과 특징 Apr 19, 2024 am 09:03 AM

C++ 익명 함수의 사용법과 특징

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 Jan 05, 2024 pm 06:08 PM

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법

Python 람다 표현식: 축약형, 간결함, 강력함 Python 람다 표현식: 축약형, 간결함, 강력함 Feb 19, 2024 pm 08:10 PM

Python 람다 표현식: 축약형, 간결함, 강력함

JavaScript에서 HTTP 상태 코드를 쉽게 얻는 방법 JavaScript에서 HTTP 상태 코드를 쉽게 얻는 방법 Jan 05, 2024 pm 01:37 PM

JavaScript에서 HTTP 상태 코드를 쉽게 얻는 방법

Golang 익명 함수는 여러 값을 반환할 수 있나요? Golang 익명 함수는 여러 값을 반환할 수 있나요? Apr 13, 2024 pm 04:09 PM

Golang 익명 함수는 여러 값을 반환할 수 있나요?

golang 함수에서 익명 함수는 어떻게 구현됩니까? golang 함수에서 익명 함수는 어떻게 구현됩니까? Jun 03, 2024 pm 07:09 PM

golang 함수에서 익명 함수는 어떻게 구현됩니까?

Python 람다 표현식: 프로그래밍을 더 쉽게 만들기 Python 람다 표현식: 프로그래밍을 더 쉽게 만들기 Feb 19, 2024 pm 09:54 PM

Python 람다 표현식: 프로그래밍을 더 쉽게 만들기

Python Lambda 표현식: 익명 함수의 힘 알아보기 Python Lambda 표현식: 익명 함수의 힘 알아보기 Feb 24, 2024 am 09:01 AM

Python Lambda 표현식: 익명 함수의 힘 알아보기

See all articles