侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

js中的趣事

2024-05-09 星期四 / 0 评论 / 0 点赞 / 78 阅读 / 1800 字

(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

仅仅只是记录一些自己不清楚的地方

 

 

广告 广告

评论区