(1)在完成朋友的一道面试题,题目具体如下: 实现这样的一个foo函数,使之满足上面两个条件: 答案: function foo(fun){ if(foo.caller == null){
(1)在完成朋友的一道面试题,题目具体如下:
实现这样的一个foo函数,使之满足上面两个条件:
答案:
function foo(fun){
if(foo.caller == null){
fun();
}else{
eval("("+fun.toString()+")")();
}
}
这个foo.caller用得很妙,主要是指向调用foo函数的对象,当这个foo函数是在全局中定义的时候,那么此时就返回null
(2)
var obj = {};
arr = [];
for(var i=0;i<4;i++){
if(i % 2 == 0){
obj.type = 'even';
}else{
obj.type = 'odd';
}
arr.push(obj);
}
console.log(arr);
这时会打印出含有四个对象的数组,而且四个对象的type都是odd,原因是你每次循环的时候,由于使用的是obj,这是个引用类型,所以每次赋值的时候都会改变之前的obj,所以最后四个obj都被最后一个重写了
(3)在控制台中输入如下表达式:
会出现如下的比较好玩的东西
[] == false // true
if([]){ console.log('this is a test'); // this is a test
仅仅只是记录一些自己不清楚的地方