>웹 프론트엔드 >JS 튜토리얼 >일부 자바스크립트 및 일부 topic_javascript 기술 분석

일부 자바스크립트 및 일부 topic_javascript 기술 분석

WBOY
WBOY원래의
2016-05-16 18:13:33936검색

http://perfectionkills.com/javascript-quiz/
다음은 이 주제에 대해 제가 이해한 것입니다. 다른 의견이나 통찰력이 있으면 언제든지 의견을 남겨주세요.

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

(function(){
인수 유형 반환;
})() ;

이 질문은 비교적 간단합니다. 모든 사람이 인수를 배열이라고 생각하지 않는 한 괜찮습니다.
반환은 객체입니다.
코드 복사 코드는 다음과 같습니다. var f = function g(){ return 23 }; ();

조준 책을 살펴보면 다음과 같은 질문에 이 함정이 많이 등장합니다. >반환은 정의되지 않습니다.



코드 복사
코드는 다음과 같습니다. (function( x){ delete x; return x;
})(1);


자바스크립트의 삭제는 소개되거나 지정된 객체가 아니라 객체 자체를 삭제합니다.
/*
데이터
 삭제 연산자
 객체에서 속성을 삭제하거나 배열에서 요소를 삭제합니다.
 표현식 삭제
 표현식 매개변수는 유효한 JScript 표현식이며 일반적으로 속성 이름 또는 배열 요소입니다
따라서 여기에서 형식 매개변수를 변경하는 것은 이와 관련이 없습니다.
*/
삭제에 대한 구체적인 분석에 대해서는 정원 친구가 그 질문 부분에 대한 원문 설명을 해줬는데 제가 부주의해서 읽지 않았네요 ㅎㅎ
http://perfectionkills.com/understanding-delete/
1번으로 돌아갑니다.




코드 복사
코드는 다음과 같습니다. var y = 1 , x = y = typeof x;
이 부분에는 약간의 함정이 있습니다.
x= 정의되지 않은 경우에는 typeof가 실제로 typeof입니다. "정의되지 않음". ㅎㅎ
반환 물론 문자열입니다.



코드 복사

코드는 다음과 같습니다. (function f(f ){ return typeof f(); })(function(){ return 1; }); 음, 또 함정이 나오네요. ㅋㅋㅋ 이게 뭐죠? 형식 매개변수와는 관련이 없으며 그래서 형식 매개변수에는 변화가 없습니다. >그래서 숫자가 반환됩니다.




코드 복사


코드는 다음과 같습니다.


var foo = {
bar: function() { return this.baz; }, baz: 1 }; 반환 유형 인수[0]( ); })(foo.bar); 주로 전달되는 것은 그의 부모가 아닌 foo.bar입니다. undefine 반환




코드 복사


코드는 다음과 같습니다. = {
bar: function(){ return this.baz; },
baz: 1
}
typeof (f = foo.bar)()

위 질문으로 보면 이 질문을 이해할 수 있습니다. 코드 복사

코드는 다음과 같습니다.


var f = (function f(){ return " 1"; }, function g(){ return 2; })(); 🎜>

여기서 중요한 것은 ()의 반환입니다. ()는
반환번호

코드 복사

코드는 다음과 같습니다. var x = 1 if (function f(){}) { x = 유형: }
x


if에 있는 것들은 실제 존재(객체)이기 때문에 확실히 실행될 수 있습니다. null|underfined 객체는 if 아래에서 계속될 수 있습니다. 그러나 원칙적으로 f는 존재하지 않습니다. .
그래서 1undefine이 반환됩니다.

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

var x = [typeof x, typeof y][1];
typeof typeof x

여기서는 typeof y ,undefined입니다. 정의되지 않음"
"문자열"을 반환합니다.

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

(function(foo){
return typeof foo.bar;
})({ foo: { bar: 1 } })

헤헤, 여기요 작은 함정, 너무 빨리 보면 쉽게 들어갈 수 있습니다.
간략한 설명, var fo = {foo:{bar:1}} function(foo){})(fo) >return typeof foo.bar ==> fo.bar의 반환 유형
따라서 "정의되지 않음"을 반환합니다.


코드 복사 코드는 다음과 같습니다.
(function f(){
function f(){ return 1; }
return f();
function f(){ return 2; }
})();

이 질문은 반환값에 대해서는 중요하지 않습니다. 이는 모든 함수를 구문 분석한 것입니다.
따라서 2를 반환합니다.


코드 복사 코드는 다음과 같습니다.
function f(){ return f; }
new f() instanceof f; 이 부분은 잘 이해가 안 되고, Bottle이 제시한 설명도 이해가 되는 것 같습니다
new f()는 새로운 객체가 아닌 f 자체를 가져오므로 f의 인스턴스가 아닙니다.
그래서 return. false.

with (function(x, undefine){}) length
with를 함수로 간주하면(alert와 동일) 이 길이는 다음과 같습니다. with의 형식 매개변수의 길이입니다.
2로 돌아갑니다.
아직 js에 관해 정리해야 할 문제가 많은 것 같습니다. Aiming은 큰 책이고 이 부분에 대한 설명은 매우 강력합니다. . 이는 사람들이 몇 가지 함정과 문제를 우회할 수 있게 해줍니다.
이러한 질문은 사람의 js 능력을 완전히 반영할 수는 없지만 최소한 js 처리가 어떻게 작동하는지 사람들에게 알릴 수 있습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:JQuery live函数_jquery다음 기사:JQuery live函数_jquery