看看国外的javascript题目,你能全部做对吗?

看看国外的javascript题目,你能全部做对吗?

叶小钗 的博客最近都在讨论面试题目

正好以前也看过一篇,就借花献佛拿出来分享一下 http://perfectionkills.com/javascript-quiz/

附带了自己的理解,答案有争议的地方欢迎大家指出

题目一

2
3
4
(function(){
  return typeof arguments;
})();
 "object"
arguments是对象,伪数组有两件事要注意这里:
参数不是数组,它是一个数组一样的物体,你可以使用方括号和整数索引的元素,但方法通常可在一个如推上不存在参数数组
Array.prototype.slice.call(arguments); 转成数组
当然arguments即使是数组,返回的依然是"object",因为数组也是对象,附加:typeof 对类型的判断
https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Operators/typeof

题目二

2
3
var f = function g(){ return 23; };
typeof g();
会发生错误
因为function g(){ return 23; }是函数表达式,事实上只有事一个名字,不是一个函数声明
函数实际上是绑定到变量f,不是g.
指定的标识符在函数表达式虽然有其用途:堆栈跟踪是清晰而不是充斥着无名的函数,你可以有一个匿名函数递归调用本身不使用argument.callee
附非常详细的帖子函数表达式
http://kangax.github.io/nfe/

题目三

2
3
4
5
(function(x){
  delete x;
  return x;
})(1);
 答案

题目四

2
3
var y = 1, x = y = typeof x;
x;
 答案

题目五

2
3
4
(function f(f){
  return typeof f();
})(function(){ return 1; });
 答案

题目六

复制代码
var foo = {  
  bar: function() { return this.baz; },  
  baz: 1 
}; 

(function(){  
  return typeof arguments[0](); 
})(foo.bar);
复制代码
答案

题目七

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

题目八

var f = (function f(){ return "1"; }, function g(){ return 2; })(); 
typeof f;
答案

题目九

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

题目十

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

题目十一

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

题目十二

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

题目十三

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

题目十四

with (function(x, undefined){}) length;
答案
 
 
分类: javascript
原文地址:https://www.cnblogs.com/Leo_wl/p/3174593.html