JavaScript基础核心特性的理解题-文章-关尔先生

JavaScript基础核心特性的理解题 前端

JavaScript高级程序设计训练,深入理解核心基础。

关尔先生2016-12-30 14:45:20

  • 写在前面的话

如果你不Baidu/Google,能答对4个及以上并且想拿高工资,那就可以联系汤姆大叔了。
(说实话,我是不信的。)

  • 6个题目

  1. 找出数字数组中最大的元素(使用Match.max函数)
  2. 转化一个数字数组为function数组(每个function都弹出相应的数字)
  3. 给object数组进行排序(排序条件是每个元素对象的属性个数)
  4. 利用JavaScript打印出Fibonacci数(不使用全局变量)
  5. 实现如下语法的功能:var a = (5).plus(3).minus(6); //2
  6. 实现如下语法的功能:var a = add(2)(3)(4); //9

  • 测试点分析
考点解析,慎入
  1. Math.max、apply或call函数
  2. 作用域、闭包、函数表达式立即执行
  3. 排序比较函数、获取对象属性的个数
  4. 条件语句、函数调用自身
  5. 给原生对象添加方法
  6. 函数的定义及用法,参数作用域,以函数为值传递;

  • 关尔先生的答案

下方是关尔先生的答案,慎入

       //随机一个【10到20】的数组
        var array=[];
        for (var i=0;i<10;i++){
            array.push(Math.floor(Math.random()*11)+10);
        }
        console.log(array);

        console.log("-------第1题---------------------");

        //程序如下:
        var maxNum=Math.max.apply(Math,array);

        //完了,输出结果
        console.log("上面的数列最大值是:"+maxNum);

        console.log("---------第2题-------------------");
        //程序如下:
        var arrayFunction=[];
        for( a in array){
            arrayFunction[a]=function (x) {
                return function () {
                    console.log(x);
                }
            }(array[a])
        }

        //完了,输出结果
        for(o in arrayFunction){//输出对象数组
            console.log("第"+o+"个函数弹出值如下:");
            arrayFunction[o]();
        }

        console.log("---------第3题-------------------");
        //随手写一个对象数组
        var arrayObject=[{name:"A",age:1,job:"AA",good:"AAA"},
            {name:"A",age:1,good:"AAA"},
            {name:"A",age:1,job:"AA",good:"AAA"},
            {name:"A"},
            {name:"A",job:"AA",good:"AAA"},
            {job:"AA",good:"AAA"}];
        //给对象数组排序
        arrayObject.sort(function (a,b) {
            var a=Object.getOwnPropertyNames(a).length;
            var b=Object.getOwnPropertyNames(b).length;
            return a-b;
        });
        //完了,输出结果
        console.log("对象数组按属性个数的从小到大排列:");
        for(o in arrayObject){//输出对象数组
            console.log(o+":");
            console.log(arrayObject[o]);
        }

        console.log("-------------第4题---------------");
        //程序如下:
        function Fibonacci (n) {
            var FibonacciArray=Array();
            for(var i=1;i<=n;i++){
                FibonacciArray.push(
                        (function(ii){return ii<3?1:arguments.callee(ii-1)+arguments.callee(ii-2);})(i)
                );
            }
            return FibonacciArray;
        }

        //完了,假如要前15个,结果如下:
        var n=15;
        console.log("输出前"+n+"个斐波那契数列的数组");
        console.log(Fibonacci(n));


        console.log("-----------第5题-----------------");

        //实现如下语法的功能:var a = (5).plus(3).minus(6);//2
        //给原生Number对象添加方法
        Number.prototype.plus=function (a) {
            return Number(this)+a;
        };
        Number.prototype.minus=function (a) {
            return Number(this)-a;
        };

        //完了,输出结果
        var b = (5).plus(3).minus(6);
        console.log('(5).plus(3).minus(6)='+b);

        console.log("---------第6题-------------------");

        //实现如下语法的功能:var a = add(2)(3)(4);//9

        //程序如下:
        function add(a) {
            return function (b) {
                return function (c) {
                    return a+b+c
                }
            }

        }

        //完了,输出结果
        var a=add(2)(3)(4);
        console.log('add(2)(3)(4)='+a);



js测试题闭包作用域

上一篇:一个位置多面角色

下一篇:js控制iframe高度自适应

本文链接: http://www.nanshanqiao.com/zz_article/28.html

暂无评论

评论