web前端开发技术——JavaScript学习手册八:JS函数

第1关:用函数语句定义函数

编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

定义一个名字为mainJs()的函数;

该函数有两个参数,均为字符串类型;

函数的功能是返回这两个参数的拼接结果;

具体请参见后续测试样例。

//请在此处编写代码
/********** Begin **********/
function mainJs(a,b)
{
    a = a + b;
    return a;
}
mainJs();

/********** End **********/

第2关:用表达式定义函数

编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

定义一个匿名函数,将它赋值给变量myFunc;

该函数实现求一个三位数的各个位上的数字之和,比如123各个位上的数字分别为1、2和3,和是6;

具体请参见后续测试样例。

function mainJs(a) {
    a = parseInt(a);
    
	//请在此处编写代码
	/********** Begin **********/
    var myFunc = function (a) {
        var sum = 0;
        var b = 0;
        for (var i = 2; i > 0; i--){
            b = a;
            b = Math.floor(b / Math.pow(10, i));
            sum += b;
            a =Math.floor( a % Math.pow(10, i));
        }
        sum = sum + a;
        return sum;
    };
    
	/********** End **********/
    return myFunc(a);
}

第3关:函数的调用

编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

mainJs()代码区上面定义了三个函数,从上到下分别编号为1、2和3;

mainJs()有三个参数a、b和c,根据a的值(函数的编号,可取的值是1、2和3)调用相应的函数(可选的函数分别是getMax()、getMin()和getSum(),具体请参考代码!),并传入参数b和c,返回得到的结果;

比如a为1表示你需要调用函数getMax();

具体请参见后续测试样例。

//求最大值的函数
function getMax(b,c) {
    return b>c?b:c;
}

//求最小值的函数
var getMin = function(b,c) {
    return b>c?c:b;
}

//对象中的求和函数
var myObject = {
    id:1,
    name:"function",
    myFunc:function(b,c) {
        return b+c;
    }
}

function mainJs(a,b,c) {
    a = parseInt(a);
    b = parseInt(b);
    c = parseInt(c);
    var result = 0;
	//请在此处编写代码
	/********** Begin **********/
    if (a == 1) {
        result = getMax(b, c);
    }
    if (a == 2) {
        result = getMin(b, c);
    }
    if (a == 3) {
        result = myObject.myFunc(b,c);
    }
    return result;
	/********** End **********/
}

第4关:未定义的实参

编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

路口有四个方向的红绿灯,其默认值分别是green、green
、red和yellow;

对于函数mainJs(a,b,c,d)的四个参数,要求在没有传入实参或者传入undefined时,其分别设置为上述默认值;

最后返回四个字符串型参数的拼接结果,字符串中间用-符号隔开,如分别传入red、red、yellow和undefined时,返回red-red-yellow-yellow;

具体请参见后续测试样例。

function mainJs(a,b,c,d) {
	//请在此处编写代码
	/********** Begin **********/
    if (a === undefined)
        a = "green";
    if (b === undefined)
        b = "green";
    if (c === undefined)
        c = "red";
    if (d === undefined)
        d ="yellow";
    return a + "-" + b + "-" + c + "-" + d;
    
	/********** End **********/
}

第5关:实参对象

编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

定义函数getMax();

该函数计算并返回一组整数的最大值;

整数的个数不确定;

如果整数个数为0,直接返回0;

具体请参见后续测试样例。

//请在此处编写代码
/********** Begin **********/
function getMax() {
    var alength = arguments.length;
    var maxn = 0;
    if (alength == 0) {
        return 0;
    }else{
        for (var i = 0; i < alength; i++) {
            if (maxn < arguments[i]) {
                maxn = arguments[i];
            }
        }
            return maxn;
    }
}

/********** End **********/

function mainJs(a) {
    a = parseInt(a);
    switch(a) {
        case 1:return getMax(23,21,56,34,89,34,32,11,66,3,9,55,123);
        case 2:return getMax(23,21,56,34,89,34,32);
        case 3:return getMax(23,21,56,34);
        case 4:return getMax(23,21,56,34,89,34,32,11,66,3,9,55,123,8888);
        case 5:return getMax();
        default:break;
    }
}//请在此处编写代码
/********** Begin **********/
function getMax() {
    var alength = arguments.length;
    var maxn = 0;
    if (alength == 0) {
        return 0;
    }else{
        for (var i = 0; i < alength; i++) {
            if (maxn < arguments[i]) {
                maxn = arguments[i];
            }
        }
            return maxn;
    }
}

/********** End **********/

function mainJs(a) {
    a = parseInt(a);
    switch(a) {
        case 1:return getMax(23,21,56,34,89,34,32,11,66,3,9,55,123);
        case 2:return getMax(23,21,56,34,89,34,32);
        case 3:return getMax(23,21,56,34);
        case 4:return getMax(23,21,56,34,89,34,32,11,66,3,9,55,123,8888);
        case 5:return getMax();
        default:break;
    }
}

第6关:对象作为参数

编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

函数objcetFunction()的参数是一个对象,该函数的功能是返回属性名1+':'+属性值1+','+属性名2+':'+属性值2+','+......+属性值n+',';

测试的时候我们会往mainJs()传入参数1或2或3,分别表示调用函数objectFunction()并传入对象参数park、computer或者city;

比如对于第一个对象park,该函数需要返回name:Leaf Prak,location:Fifth Avenue,todayTourists:4000,;

具体请参见后续测试样例。

var park = {
    name:"Leaf Prak",
    location:"Fifth Avenue",
    todayTourists:4000
};

var computer = {
    name:"Levenon",
    price:"$800",
    memory:"8G"
};

var city = {
    name:"HangZhou",
    country:"Chine",
    population:9400000
}

function objectFunction(object) {
//请在此处编写代码
/********** Begin **********/
    if (object == park) {
        return 'name' + ':' + park.name + ',' + 'location' + ':' + park.location + ',' + 'todayTourists' + ':' + park.todayTourists+',';
    }
     if (object == computer) {
         return 'name' + ':' + computer.name + ',' + 'price' + ':' + computer.price + ',' + 'memory' + ':' + computer.memory+',';
     }
    if (object == city) {
         return 'name' + ':' + city.name + ',' + 'country' + ':' + city.country + ',' + 'population' + ':' + city.population+',';
    }

/********** End **********/
}

function mainJs(a) {
    a = parseInt(a);
    switch(a) {
        case 1:return objectFunction(park);
        case 2:return objectFunction(computer);
        case 3:return objectFunction(city);
        default:break;
    }
}

第7关:函数对象

编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

已知getOddNumber(a)求数组a中奇元素的个数,getEvenNumber(a)求数组a中偶元素的个数;

完成函数getNumber(func,a),实现:根据函数参数func的不同,求数组a中奇元素的个数或者偶元素的个数;

上一条提到的func的值只有可能是getOddNumber或者getEvenNumber。

//求数组中奇数元素的个数
function getOddNumber(a) {
    var result = 0;
    for(var i = 0;i < a.length;i++) {
        if(a[i]%2 != 0)
            result++;
    }
    return result;
}

//求数组中偶数元素的个数
function getEvenNumber(a) {
    var result = 0;
    for(var i = 0;i < a.length;i++) {
        if(a[i]%2 == 0)
            result++;
    }
    return result;
}

function getNumber(func,a) {
	//请在此处编写代码
	/********** Begin **********/
    return func(a);

	/********** End **********/
}

//测试接口
function mainJs(b,a) {
    a = a.split(",");
    var aLength = a.length;
    for(var i = 0;i < aLength;i++) {
        a[i] = parseInt(a[i]);
    }
    if(b == "getEvenNumber") {
        return getNumber(getEvenNumber,a);
    } else {
        return getNumber(getOddNumber,a);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值