Home  >  Article  >  Web Front-end  >  Analysis of some javascript and some topics_javascript skills

Analysis of some javascript and some topics_javascript skills

WBOY
WBOYOriginal
2016-05-16 18:13:33905browse

http://perfectionkills.com/javascript-quiz/
The following is my own understanding of these topics. If you have any different opinions or insights, please feel free to comment.

Copy code The code is as follows:

(function(){
return typeof arguments;
})();

This question is relatively simple, as long as everyone does not think that arguments are arrays, it will be fine.
The return is object.
Copy code The code is as follows:

var f = function g(){ return 23; };
typeof g();

Looking through the aiming book, you will find that there is a relatively complete explanation of function and several creation methods. This trap appears in many of the following questions. Be careful.
The return is undefined.
Copy code The code is as follows:

(function(x){
delete x;
return x;
})(1);

Javascript’s delete does not delete the object introduced or pointed to, but the object itself.
/*
Data
 delete operator
 Deletes an attribute from an object, or deletes an element from an array.
 delete expression
 The expression parameter is a valid JScript expression, usually an attribute name or an array element
So, the change of the formal parameters here has nothing to do with it.
*/
Regarding the specific analysis of delete, a garden friend gave the original explanation of that question part, but I was careless and didn’t read it, haha
http://perfectionkills.com/understanding-delete/
Return to 1.
Copy code The code is as follows:

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

There is a little trap in this part. Haha.
x= undefined, as everyone knows. Then typeof x is actually typeof "undefined". Haha
Return Yes, of course it is a string.
Copy code The code is as follows:

(function f(f ){
return typeof f();
})(function(){ return 1; });

Well, the trap is here again. Haha. What is this f? ? It has nothing to do with the formal parameters, and you can’t get them.
So, there is no change in the formal parameters.
So, number is returned.

Copy code The code is as follows:

var foo = {
bar: function() { return this.baz; },
baz: 1
};
(function(){
return typeof arguments[0]();
})(foo.bar);

This place . Mainly consider the context of this. What is passed in is foo.bar, not his parent.
So, return undefined .

Copy the code The code is as follows:

var foo = {
bar: function(){ return this.baz; },
baz: 1
}
typeof (f = foo.bar)();

With the above question, this question can be understood.
So, return undefined .

Copy code The code is as follows:

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

Here, what is important is the return of (). () returns the last one.
Return Number.

Copy code The code is as follows:

var x = 1;
if (function f(){}) {
x = typeof f;
}
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 처리가 어떻게 작동하는지 사람들에게 알릴 수 있습니다.
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:JQuery live函数_jqueryNext article:JQuery live函数_jquery