javascript谜题
2016-02-02 08:14
495 查看
第一题
答案:就是考Arguments对象的typeof,看平时用firebug多不多了……
第二题
答案:根据标准,命名函数表达式的函数名只对函数体内可见,因此报错。
第三题
答案:参数不可删除,所以返回的是1.
第四题
答案:声明两个变量x与y,y最初赋为1,x没有赋值,默认赋给window的一个属性undefined,因此typeof
undefined为"undefined",最后x=y="undefined"。
第五题
答案:函数名被优先级更高的参数名覆盖了--->
(function
(f){
return
typeoff();
})(function(){
return1;});
typeof
1--->"number"
第六题
答案:我们把下面那个自动执行函数分解一下
var
a=function(){
return
typeofarguments[0]();
};
a(foo.bar);
执行完arguments[0](),即得到this.baz,由于this变量在此绑定失效,它指向window,window有bax变量吗?没有,返回"undefined".
第七题
答案:我们把最后一行分解一下,window.f,f=
foo.bar,f(),typeof
f(),返回"undefined"。
第八题
答案:首先要理解分组选择符,最后a会赋给什么呢?
var
a=(1,2,3);
alert(a)
--->3
那么这就简单了,f =function(){return2};
typeof
f()--->number
第九题
答案:函数声明只能裸露于全局作用域下或位于函数体中。从句法上讲,它们不能出现在块中,例如不能出现在,if、while
或for语句中。因为块只能包含语句,
因此if()中的f函数不能当做函数声明,当成表达式使用,可能在预编译阶段做了如下处理,if((XXX
=function(){}))
因此我们是找不到f的,所以结果是:1undefined
第十题
答案:数组其实就是这个样子["undefined","undefined"],所以结果是:"string"
第十一题
答案:分解一下
var
bb={foo:{bar:1}}
(function(j){
return
typeofj.bar
})(bb);
所以结果是:"undefined"
注意那个对象只有foo属性,没有bar属性
第十二题
答案:函数声明会在预编译阶段被提前,结果是:2
第十三题
答案:由于函数f会返回自身,这个new就形同虚设,如果f的形式为
functionf(){returnthis}或functionf(){}就不一样,结果是:false
第十四题
答案:with就是一个读写器,题意是取出函数的length属性,而函数的length就是指它形参的长度,所以length的值是2
( function (){ |
return typeof arguments; |
})(); |
//问自动执行函数会返回什么值 |
第二题
var f = function g(){ return 23; }; |
typeof g(); |
//问最后一行的执行结果 |
第三题
( function (x){ |
delete x; |
return x; |
})(1); |
//问自动执行函数会返回什么值 |
第四题
var y =1,x=y= typeof x; |
x; |
//问最后一行的执行结果 |
undefined为"undefined",最后x=y="undefined"。
第五题
( function f(f){ |
return typeof f(); |
})( function (){ return 1; }); |
//问自动执行函数会返回什么值 |
(function
(f){
return
typeoff();
})(function(){
return1;});
typeof
1--->"number"
第六题
var foo ={ |
bar: function () { return this .baz; }, |
baz: 1 |
}; |
( function (){ |
return typeof arguments[0](); |
})(foo.bar); |
//问自动执行函数会返回什么值 |
var
a=function(){
return
typeofarguments[0]();
};
a(foo.bar);
执行完arguments[0](),即得到this.baz,由于this变量在此绑定失效,它指向window,window有bax变量吗?没有,返回"undefined".
第七题
var foo ={ |
bar: function (){ return this .baz; }, |
baz: 1 |
} |
typeof (f =foo.bar)(); |
//问最后一行的执行结果 |
foo.bar,f(),typeof
f(),返回"undefined"。
第八题
var f =( function f(){ return "1" ; }, function g(){ return 2; })(); |
typeof f; |
//问最后一行的执行结果 |
var
a=(1,2,3);
alert(a)
--->3
那么这就简单了,f =function(){return2};
typeof
f()--->number
第九题
var x =1; |
if ( function f(){}) { |
x typeof f; |
} |
x; //问x的值 |
或for语句中。因为块只能包含语句,
因此if()中的f函数不能当做函数声明,当成表达式使用,可能在预编译阶段做了如下处理,if((XXX
=function(){}))
因此我们是找不到f的,所以结果是:1undefined
第十题
var x typeof x, typeof y][1]; |
typeof typeof x; |
//问最后一行的执行结果 |
第十一题
( function (foo){ |
return typeof foo.bar; |
})({ |
//问自动执行函数会返回什么值 |
var
bb={foo:{bar:1}}
(function(j){
return
typeofj.bar
})(bb);
所以结果是:"undefined"
注意那个对象只有foo属性,没有bar属性
第十二题
( function f(){ |
function f(){ return 1; } |
return f(); |
function f(){ return 2; } |
})(); |
//问自动执行函数会返回什么值 |
第十三题
function f(){ return f; } |
new f() instanceof f; //问这一行的值 |
functionf(){returnthis}或functionf(){}就不一样,结果是:false
第十四题
with ( function (x, |
//问length的值为多少 |
相关文章推荐
- 给你的站点加入 console.js
- JavaScript 开发进阶:理解 JavaScript 作用域和作用域链
- JavaScript函数表达式
- 详解JavaScript中的函数与闭包
- JS 一定要放在 Body 的最底部么?聊聊浏览器的渲染机制
- JavaScript继承详解(六)
- JavaScript继承详解(五)
- JavaScript继承详解(四)
- JavaScript继承详解(三)
- JavaScript继承详解(二)
- JavaScript继承详解(一)
- 定时器的应用(二):无缝滚动
- JavaScript 资源大全
- 使用 JavaScript 控制 HTML5 视频播放器
- Hammer.js+轮播原理实现简洁的滑屏功能
- javascript实现瀑布流加载图片原理
- 原生js实现图片层叠轮播切换效果
- javascript自动切换焦点控制效果完整实例
- javascript绘制漂亮的心型线效果完整实例
- JavaScript File API文件上传预览