前端面试题收集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是实参集合

浙公网安备 33010602011771号