10 09/2014

javascript quiz 2

最后更新: Wed Sep 10 2014 12:37:50 GMT+0800

看过 javascript quiz?好吧,继续看代码(点击代码看答案)

第一题


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

object 没有参数,arguments 就是空数据

第二题


function a(){}
console.log(typeof a,typeof a())

function undefined

第三题


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

1 x 删除不了,arguments[0] 可以

第四题


var y = 1, x = y = typeof x;
console.log(x);

undefined 从右向左

第五题


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

number 其实等于执行的是
(function(f){
return typeof f(); //f() 执行后得到 1
})(function(){ return 1; });

第六题


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

undefined arguments[0]() 是可以执行的!
var foo = {
bar: function() { alert(1); },
baz: 1
};
(function(){
arguments[0]();
})(foo.bar);//会 alert 1
实际上执行的是
var foo = {
bar: function() { console.log(this) },
baz: 1
};
foo.bar()
看控制台的 this,this 这时候不是 foo,而是 bar 这个 function

第七题


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

undefined f 等于 foo.bar 简写,执行 f(),而 f.baz 的确没有定义

第八题


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

number f 现在是 2。 a=1,2 实际上等于 a=2。上面代码等于
f=(function(){return 2;})()

第九题


var x = 1;
if (function f(){}) {
x += typeof f;
}
x;

1number function 定义会被提升,所以 if(…) 成立,然后 。。。

第十题


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

“string” var 被提升;所以 [“undefined”,”undefined”][1] 就是 “undefined”,然后这就是个 “string”,”string” 的类型还是 “string”

第十一题


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

“undefined” 程序解读为:返回 object 的 bar 值的类型。执行这个 (function(ddd){console.log(ddd);})({ foo: { bar: 1 }}); 就知道为什么了,还不理解那就执行
(function(ddd){
console.log( ddd.bar);
})({ foo: { bar: 1 },bar:12313 });

第十二题


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

2 函数定义会被提升,所以 f() 返回 2

第十三题


function f(){ return f; }
new f() instanceof f;

false 这个不太理解!下面返回 true
function f(){ return 1; }
new f() instanceof f;

第十四题


with (function(x, undefined,y){}) length;

3 function(x, undefined,y){} 这是个 function,对这个 function 做一些操作,要它的 length(参数个数)


原文来自:

http://perfectionkills.com/javascript-quiz/