前端面试题收集1

面试题目1

1.

(function(){
return typeof arguments;
})();
"object" "array" "arguments" "undefined"

Answer: arguments代表函数的实参集合,此处是一个空对象 ,答案是"object"

2.

var f = function g(){ return 23; };
typeof g();
"number" "undefined" "function" Error

Answer: 有名函数表达式不规范,typeof它会出错,g()实际上并不存在,在g方法执行的时候已经报错

3.

(function(x){
delete x;
return x;
})(1);
1 null undefined Error

Answer: delete只能删除对象的属性,不能删除参数和变量,所以此处的变量并没有被删除,仍然返回 1

4.

var y = 1, x = y = typeof x;
 x;
1 "number" undefined "undefined"

Answer: 赋值表达式是从右向左赋值,所以此处x被赋了 typeof x;
** typeof 返回的一定是字符串,所以是”undefined“ **

5.

(function f(f){
return typeof f();
})(function(){ return 1; });
"number" "undefined" "function" Error

Answer: 自执行函数传入的参数为一个函数,所以最后 return typeof f() ==> return typeof 1 结果为number

6.

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

Answer: 自执行函数中通过arguments【0】把foo.bar转化为了一个不依赖foo的单独函数,所以this.baz并不存在,
相当于typeof undefined所以结果为”undefined“

7.

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

Answer: 同上一题,f= foo.bar 把foo对象下的bar赋给了f
function f(){return this.baz} 执行上下文变了,this.baz为undefined

8.

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

Answer:”,“为分组选择符,分组选择符会导致选中后定义的的,所以此时的f = 2;则选择number

9.

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

*Answer: if(function(){})这种条件判断本身是没有意义的,但它也不属于if判断为错的情况(if判断为错的情况
只有false,null,0,”“,所以会进入if判断,x = 1 + 'undefined' *
函数声明不能写在运算过程中

10.

var x = [typeof x, typeof y][1];
typeof typeof x;
"number" "string" "undefined" "object"

Answer: typeof x为string类型,所以为string

11.

  (function(foo){
    return typeof foo.bar;
  })({ foo: { bar: 1 } });
"undefined" "object" "number" Error

Answer:{foo:{bar:1}}是自执行函数的参数,
return typeof foo.bar 这一句中的 foo就是{foo:{bar:1}},则为undefined

12.

(function f(){
  function f(){ return 1; }
  return f();
  function f(){ return 2; }
})();
1 2 Error (e.g. "Too much recursion") undefined

Answer: js中函数声明会预解析,在return f()没执行之前,f()已经被覆盖为后声明的函数,所以是2

13.

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

Answer:

14.

with (function(x, undefined){}) length;
1 2 undefined Error

Answer:with作用域里的形参长度2
函数的长度是函数的形参集合,arguments是实参集合

posted @ 2016-07-11 16:11  解维  阅读(224)  评论(0)    收藏  举报