目 录CONTENT

文章目录

JavaScript周考一

Administrator
2020-07-24 / 0 评论 / 0 点赞 / 5798 阅读 / 6485 字

JavaScript周考

看程序写结果(55分)

  1. 定出下列代码的运行结果【2分】

    var a=10, b=20,c=30;
    ++a;  //11
    a++;  //这次11,下次12
    var e=++a+(++b)+(c++)+a++;
    //13+21+30+13=77
    console.log(e);
    
  2. 写出下列代码的运行结果【4分】

    var length=10;
    function fn(){
        console.log(this.length);
    }
    var obj={
        length:5,
        method:function(fn){
            fn();
            arguments[0]();
        }
    }
    obj.method(fn,1);
    //本题答错不扣分
    
  3. 写出下列代码的结果【3分】

    var v = 123;
    function foo(){
        var v = 456;
        function inner(){
            console.log(v);
        }
        return inner;
    }
    result = foo()
    console.log(result())   //456  undefined
    
  4. 写出下列代码的结果【3分】

    Name='root';
    Age = 18;
    function Foo(name,age){
        this.Name = name;
        this.Age = age;
        this.Func = function(){
            console.log(this.Name,this.Age);
            /*
            (function(){
                 console.log(this.Name,this.Age);
            })();
            */
            function a(){
                 console.log(this.Name,this.Age);
                //普通调用  this指向全局的window  
            }
            a();
        }
    }
    obj = new Foo('alex',666);
    obj.Func()
    //'alex' 666,   'root'   18
    
  5. 写出下列程序的结果【3分】

    var result = ["1","2","3"].map(parseInt);
    console.log(result);
    //[1,NaN,NaN]
    
  6. 写出下列代码的运行结果【6分】

    var userName = "小明";
    var obj = {
        userName: "小红",
        sayHello: function () {
            console.log(this.userName);
        }
    }
    var stuArr = [obj];
    var teacher = {
        userName: "老师"
    }
    stuArr.map(function (item, index, a) {
        console.log(this.userName);
        item.sayHello.call(this);
        return item.sayHello.bind(obj);
    }.bind(teacher), window).forEach(function(item,index,a){
        item();
    });
    //bind可以理解绑定this的指向与call/apply一样的
    //老师,老师  ,小红
    
  7. 请写出下列程序的运行结果【4分】

    var foo = "11"+2-"1";
    //"112"-"1";    //
    console.log(foo);   //111
    console.log(typeof foo); "number"
    
  8. 请写出下列代码运行结果【2分】

    var foo=1;
    +function(){
        console.log(foo);
        var foo=2;
        console.log(foo);
    }();
    //undefined   2;
    
  9. 请写出下列代码的运行结果【3分】

    var a=10; b=20; c=4; 
    console.log(++b+c+a++);
    //21+4+10
    //35
    
  10. 请定出下列程序的运行结果【2分】

    for(i=0,j=0;i<10,j<6;i++,j++){
    	k = i + j;
    }
    console.log(k);  //10
    
  11. 请定出下列代码在控制台依次打印的结果【4分】

    function f1(){
        var tmp = 1;
        this.x = 3;
        console.log(tmp);
        console.log(this.x);
    }
    var obj = new f1();   // 	1, 3
    console.log(obj.x)    // 3
    f1();   //1,3   //普通调用,this指向window 
    console.log(f1());   // 1,3,undefined 
    
  12. 请定出下列代码的执行结构【2分】

    var a = 6;
    setTimeout(function () {
        console.log(a); 
        var a = 666;
    }, 1000);
    a = 66;
    //undefined
    
  13. 请定出代码的依次运行结果【7分】

    function Foo() {
        //注意与下面的getName发生冲突
    	getName = function () { 
            console.log(1); 
        };
     	return this;
    }
    //把Foo方法当成了对象
    Foo.getName = function () { 
        console.log(2);
    };
    //Foo当成构造方法  new Foo()---->.__proto__
    Foo.prototype.getName = function () { 
        console.log(3);
    };
    var getName = function () {
        console.log(4);
    };
    /*此处会被覆盖
    function getName() { 
        console.log(5);
    }
    */
    
    Foo.getName();   //2  对象调方法
    getName();       //4
    Foo().getName();   //1
    //执行FOO(覆盖了外边的getName),返回window ----window.getName()
    //window.getName()指的是全局的getName()
    
    getName();   //1
    new Foo.getName();   //2
    new Foo().getName();  //3
    new new Foo().getName();  //3
    //new  this.getName();
    
  14. 看程序写结果【2分】

    (function test(){
        var a=b=5;
        // var a;
        //b=5;
        //a=b;
        console.log(typeof a);   //number
        console.log(typeof b);   //number
    })();
    console.log(typeof a);  //undefined
    console.log(typeof b);  //number
    
  15. 看代码写结果【2分】

    var User = {
        count: 1,
        getCount: function() {
        	return this.count;
        }
    };
    console.log(User.getCount());  //1
    var func = User.getCount;
    console.log(func());   //undefined
    
  16. 说出下列函数的作用是什么,空白区别填写什么【6分】

    function fn(str) {
    	this.str = str;
    }
    fn.prototype.format = function() {
        var arg = arguments;
        return this.str.replace(/\{\(d+)\}/g, function(a, b) { 
       	 	return arg[b] || "";
    	});
    }
    var t = new fn('<p><a href="{0}">{1}</a><span>{2}</span></p>');
    console.log(t.format('http://www.alibaba.com', 'Alibaba', 'Welcome'));
    

    上面的代码经过运算以后,希望得到下面的代码

    <p><a href="http://www.alibaba.com">AliBaba</a><span>Welcome</span></p>
    

    则空白处应该填写什么?

程序设计题(35分)

  1. 将数字12345678转换成RMB形式。如:12,345,678 【5分】
  2. 已知有字符串 "get-element-by-id",写一个 方法将其转化成 驼峰表示法"getElementById" 【5分】
  3. 用 js 实现随机选取 10–100 之间的 10 个数字,存入一个数组,数据中不能有重复的元素,完成后排序。【5分】
  4. 有这样一段url地址http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段 JS 程序提取 URL 中的各个 GET 参数(参数指提是后面的a=1这样的结构,参数名和参数个数不确定),将其按 key-value 形式返回到一个对象中,如{a:"1", b:"2",c:undefined,d:"xxx",e:undefined}。【10分】
  5. 删除与某个字符相邻且相同的字符,比如 fdaffdaaklfjklja 字符串处理之后成为“fdafdaklfjklja" 【10分】

发挥题(10分)

任选两题完成,共10分

  1. 定义一个 log 方法,让它可以代理 console.log 的方法

  2. 判断一个字符串中出现次数最多的字符,统计这个次数,如下字符串

    var str ='asdfssaaasasasasaa';
    

    要求:不允许将字符串转换成数组

  3. 使用递归完成求出100以内的质数

0

评论区