偶然看到javascript试题,整理了一下,转于下,日后好好研读。
在线测试,参考网页
答案位于文章底部
1.
(function(){ return typeof arguments; })();
- “object”
- “array”
- “arguments”
- “undefined”
问自动执行函数会返回什么值?// 就是考Arguments对象的typeof,看平时用firebug多不多了……
2.
var f = function g(){ return 23; }; typeof g();
- “number”
- “undefined”
- “function”
- Error
//问最后一行的执行结果 //根据标准,命名函数表达式的函数名只对函数体内可见,因此报错
------------------------------------------------
博主经营一家发饰淘宝店,都是纯手工制作哦,开业冲钻,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持!
店名: 经营: 发饰、头花、发夹、耳环等(手工制作)网店:---------------------------------------------------------------------
继续正题...
3.
(function(x){ delete x; return x; })(1);
- 1
- null
- undefined
- Error
//问自动执行函数会返回什么值 // 参数不可删除 ,1
4.
var y = 1, x = y = typeof x; x;
- 1
- “number”
- undefined
- “undefined”
//问最后一行的执行结果 //声明两个变量x与y,y最初赋为1,x没有赋值,默认赋给window的一个属性undefined,//因此typeof undefined为"undefined",最后x= y= "undefined"
5.
(function f(f){ return typeof f(); })(function(){ return 1; });
- “number”
- “undefined”
- “function”
- Error
//问自动执行函数会返回什么值 //函数名被优先级更高的参数名覆盖了 -, (function (f){ return typeof f(); })(function(){ return 1; }); typeof 1 ---> "number"
6.
var foo = { bar: function() { return this.baz; }, baz: 1 }; (function(){ return typeof arguments[0](); })(foo.bar);
- “undefined”
- “object”
- “number”
- “function”
//动执行函数会返回什么值 ? 我们把下面那个自动执行函数分解一下 var a = function(){ return typeof arguments[0]();}; a(foo.bar)执行完arguments[0](),即得到this.baz 由于this变量在此绑定失效,它指向window,window有bax变量吗? 没有,返回"undefined"
7.
var foo = { bar: function(){ return this.baz; }, baz: 1 } typeof (f = foo.bar)();
- “undefined”
- “object”
- “number”
- “function”
//后一行的执行结果?我们把最后一行分解一下 window.f f= foo.bar f() typeof f() 返回"undefined"
8.
var f = (function f(){ return "1"; }, function g(){ return 2; })(); typeof f;
- “string”
- “number”
- “function”
- “undefined”
//最后一行执行结果?首先要理解分组选择符,最后a会赋给什么呢? var a = (1,2,3); alert(a) ---> 3 那么这就简单了,f = function(){return 2};typeof f() ---> number
9.
var x = 1; if (function f(){}) { x += typeof f; } x;
- 1
- “1function”
- “1undefined”
- NaN
//x的值函数声明只能裸露于全局作用域下或位于函数体中。 从句法上讲,它们不能出现在块中,例如不能出现在 if、while 或 for 语句中。因为块只能包含语句, 因此if()中的f函数不能当做函数声明,当成表达式使用可能在预编译阶段做了如下处理 if((XXX = function(){})) 因此我们是找不到f的 , 1,undefined
10.
var x = [typeof x, typeof y][1]; typeof typeof x;
- “number”
- “string”
- “undefined”
- “object”
//最后一行执行结果?数组其实就是这个样子["undefined","undefined"]"string"
11.
(function(foo){ return typeof foo.bar; })({ foo: { bar: 1 } });
- “undefined”
- “object”
- “number”
- Error
//自动执行函数的返回值?分解一下 var bb = { foo: { bar: 1 } } (function(j){ return typeof j.bar })(bb) "undefined" 注意那个对象只有foo属性,没有bar属性
12.
(function f(){ function f(){ return 1; } return f(); function f(){ return 2; } })();
- 1
- 2
- Error (e.g. “Too much recursion”)
- undefined
//自动执行函数的返回值?函数声明会在预编译阶段被提前 ,2
13.
function f(){ return f; } new f() instanceof f;
- true
- false
//最后一行结果?由于函数f会返回自身,这个new 就形同虚设如果f的形式为 function f(){return this}或function f(){}就不一样 false
14.
with (function(x, undefined){}) length;
- 1
- 2
- undefined
- Error
//求length的值?with就是一个读写器,题意是取出函数的length属性 而函数的length就是指它形参的长度 ,2
答案:ADADA AABCB ABB