首页 > 请问把函数作为参数传递进另一个函数嗯为什么下面的例子没用?

请问把函数作为参数传递进另一个函数嗯为什么下面的例子没用?

把函数作为参数传递进另一个函数, 像下面这样, 但是没有反应, 请问, 要是想采用两个和函数的写法, 应该像下面这样写吗? 下面的代码有什么问题吗?

var i;
var num=function(i){
   for(i=1;i<21;i++){
        return i;
   };
};
num();
var str=function(num){
   var stra='Fizz';
   var strb='Buzz';
   if(num%3===0 && num%5===0){
       console.log(stra+strb);}else if(num%5===0){
       console.log(strb);}else if(num%3===0){
       console.log(stra);}else{
       console.log(num);};
};
str();
//输出 undefined

然而实际上我想输出

//输出结果为

/*
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
*/

我知道下面这种方式可以输出上面的结果, 但是像上面代码那样, 两个函数时要怎么办?

var num=function(){
    var stra='Fizz';
    var strb='Buzz';
    for(var i=1;i<21;i++){
    if(i%3===0 && i%5===0){
    console.log(stra+strb);
    }else if(i%5===0){
        console.log(strb);
        }else if(i%3===0){
            console.log(stra);}else{
                console.log(i);};
    };
};
num();


你好楼主,大概意思是这样(个人理解):
function fn(num){

//函数中定义num这个参数,相当于在函数里面声明了num
//相当于这样 var num;
console.log(num);

}
fn(1);
输出1;
//在全局中声明
var num = 3;
//还有一个就是
fn(num);//输出3
/问题修改*/
抱歉楼主,个人表达不清晰,更改如下:
function fn(num){
//意思是,穿进来的第一个参数是以num命名的。
//之前表达意思不清晰。
}


function str(min, max, step) {
    var stra = 'Fizz',
        strb = 'Buzz',
        step = step || 1;

    if(min >= max) {
        return;
    }

   if(min % 3 === 0 && min % 5 === 0){
       console.log(stra + strb);
   }else if(min % 5 === 0){
       console.log(strb);
   }else if(min % 3 === 0){
       console.log(stra);
   }else{
       console.log(min);
   }

   str(min + step, max, step);
}

str(0, 21);

inum都是参数名字, 而不是传入的参数...


好比

var test = function(num){num+1;}

var test = function(num2){num2+1;}

没啥区别

你需要在调用的时候传入函数, 而不是在定义的时候设定参数和需要调用函数名字一样

【热门文章】
【热门文章】