javascript_javascript 기술의 익명 기능을 통해 몇 가지 간단하고 흥미로운 코드 조각을 분석합니다.
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()) //스크립트 오류로 인해 "함수 없음"이 표시됩니다.
alert(a()) //스크립트 오류로 인해 "함수 없음"이 표시됩니다.
3. 새로운 기능이 차이를 만들 수 있습니다(소문자 기능)
(1), 단순 빈 기능
코드 복사 코드는 다음과 같습니다.
var func = new function() { };alert(typeof (func));
alert(func); //[객체 객체]
//alert(func()); //스크립트 오류 func는 함수가 아닙니다.
실제로 위의 코드는 다음의 Write 메소드와 동일합니다. alert(func); //[객체 객체]
//alert(func()); //스크립트 오류 func는 함수가 아닙니다.
코드 복사 코드는 다음과 같습니다.
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()); >
사실 위의 코드는 다음과 같이 작성하면 같습니다.
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
사실적인 누드 사진을 만들기 위한 AI 기반 앱

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
Repo : 팀원을 부활시키는 방법
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
헬로 키티 아일랜드 어드벤처 : 거대한 씨앗을 얻는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
스플릿 소설을이기는 데 얼마나 걸립니까?
3 몇 주 전
By DDD
R.E.P.O. 파일 저장 위치 : 어디에 있고 그것을 보호하는 방법은 무엇입니까?
3 몇 주 전
By DDD

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

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

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

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7313
9


자바 튜토리얼
1625
14


Cakephp 튜토리얼
1348
46


라라벨 튜토리얼
1260
25


PHP 튜토리얼
1207
29



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