把函数作为参数传递进另一个函数, 像下面这样, 但是没有反应, 请问, 要是想采用两个和函数的写法, 应该像下面这样写吗? 下面的代码有什么问题吗?
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);
你i
和num
都是参数名字, 而不是传入的参数...
好比
var test = function(num){num+1;}
var test = function(num2){num2+1;}
没啥区别
你需要在调用的时候传入函数, 而不是在定义的时候设定参数和需要调用函数名字一样