javascript 面试题-1

function foo(){

    for(var i = 1 ; i < 4 ; i ++){

         setTimeout(function(){ console.log(i)},0);

    }
}

foo();
//输出结果是 4,4,4


//要想输出1,2,3
//采用自执行匿名函数
function foo(){

   for(var i = 1 ; i < 4 ; i ++){

      setTimeout((function(a){console.log(a)})(i),0);
  }

}

 关于自执行匿名函数可以参考

http://www.cnblogs.com/tomxu/archive/2011/12/31/2289423.html

 

 

//大致意思是这样

var foo = function () {} 

//foo + () 就是执行这个方法
foo() 

//函数的另外一种定义
function(){}

//我们加上括号就会报错
function(){} ()

//但是当我们用 () 包住前面一段代码的时候
//像下面这样 就不会报错, 这也就是常遇到自执行函数了
(function(){})() 

 

//去除重复的字符串 数组中
var deduplication = function (arr){

     if(!arr instanceOf Array){
              return ; 
       }

     var len = arr.length ; 

     if(len <= 1){

        return arr ; 
     }

    var ret = arr[0];

    for(var i = 1 ; i < len ; i++){

         if(ret.indexOf(arr[i]) == -1){
               ret = ret + arr[i];
         }

   }

   return ret.split("");
}

 

//计算n!

var cal = function(n){

         if(n <= 1){

            return 1 ; 
         }else{

                //return  n * cal(n-1);
                return n * arguments.callee(n-1); 

          }

         

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值