分享一个比较全面的Javascript测试题

继上次测试你的JavaScript能力–推荐测试一下之后又一个Javascript测试题,这次的更全面些,前14道和上次一样,这次一共26道题,都带有答案。

希望对学习JavaScript的同学有帮助。

Javascript QUIZ [Javascript问答测验]

整理了一些Javascript的小测试,可以试着先不看结果做一下。
  1. (function(){ 
     return typeof arguments;
     })();
    

    这个考查的是arguments这个对象
  2. var f = function g(){ return 23; };
    typeof g();
    


    这个考查的是函数表达式
  3. var y = 1, x = y = typeof x;
    x;
    


    这个考查的是变量声明和运算顺序
  4. (function(x){
     delete x;
     return x;
     })(1);
    

    这个考查的是delete运算符
  5. (function f(f){ 
     return typeof f(); 
     })(function(){ return 1; });
    

    这个考查的是函数表达式
  6. var foo = { 
    bar: function() { return this.baz; }, 
    	 baz: 1
    };
    (function(){ 
     return typeof arguments[0]();
     })(foo.bar);
    


    这个考查的是对象以及作用域
  7. var foo = {
    bar: function(){ return this.baz; },
    	 baz: 1
    }
    typeof (f = foo.bar)();
    

    这个考查的是对象以及作用域
  8. var f = (function f(){ return "1"; }, function g(){ return 2; })();
    typeof f;
    


    这个考查的是函数表达式
  9. var x = 1;
    if (function f(){}) {
    	x += typeof f;
    }
    x;
    


    这个考查的是变量操作
  10. var x = [typeof x, typeof y][1];
    typeof typeof x;
    


    这个考查的是typeof的使用
  11. (function(foo){
     return typeof foo.bar;
     })({ foo: { bar: 1 } });
    

    这个考查的是JSON对象
  12. (function f(){
     function f(){ return 1; }
     return f();
     function f(){ return 2; }
     })();
    

    这个考查的是函数声明
  13. function f(){ return f; }
    new f() instanceof f;
    


    这个考查的是类和对象
  14. with (function(x, undefined){}) length;
    


    这个考查的是with
  15. var num1 = 5,
    	num2 = 10,
    	result = num1+++num2;
    


    这个考查的运算符的优先级
  16. var x = 5,
    	o = {
    x: 10,
       doIt: function doIt(){
    	   var x = 20;
    	   setTimeout(function(){
    			   alert(this.x);
    			   }, 10);
       }
    	};
    o.doIt();
    


    这个考查的Javascript的作用域以及setTimeout
  17. var num1 = "10",
        num2 = "9";
    num1 < num2;
    +num1 < num2;
    num1 + num2;
    +num1 + num2;
    


    这个考查的是字符串和数字的比较和转换
  18. var message = "Hello world!";
    message.substring(1, 4);
    message.substr(1,4);
    


    这个考查的是字符串的两个截取方法
  19. 	 var o = {
    x: 8,
    
       valueOf: function(){
    	   return this.x + 2;
       },
    toString: function(){
    			  return this.x.toString();
    		  }
    	 },
    	 result = o < "9";
    alert(o);
    result;
    


    这个考查的是对象的两个内置方法
  20. if (!("a" in window)) {
    	    var a = 1;
    }
    alert(a);
    


    这个考查的是对象以及变量的声明
  21. var a = 1,
    	b = function a(x) {
    		x && a(--x);
    	};
    alert(a);
    


    这个考查的是函数声明和变量声明
  22. function a(x) {
    	    return x * 2;
    }
    var a;
    alert(a);
    


    这个考查的是函数声明和变量声明
  23. function b(x, y, a) {
    	    arguments[2] = 10;
    		    alert(a);
    }
    b(1, 2, 3);
    


    这个考查的是arguments对象
  24. function a() {
    	    alert(this);
    }
    a.call(null);
    


    这个考查的是this和call
  25. (function(){
    	a = function(){ reuturn 1; };
    	function a(){return 2;}
    	var a;
    	return a;
    })()(); 
    

    这个考查的也是函数声明和变量声明
  26. parseInt('06'); 
    parseInt('08');
    

    这个考查的是parseInt

了解更多,请阅读:

Javascript quiz

My JavaScript quiz - answers

Answering Baranovskiy’s JavaScript quiz

http://wtfjs.com/

Tags: ,

3 Responses to “分享一个比较全面的Javascript测试题”

  1. 小秦说道:

    var f = function g(){ return 23; };
    typeof g();
    这一个,你确定是Error吗?
    g函数返回的是一个数字23,所以typeof 23的结果是 number.
    (测试环境XP+IE6)

  2. 自由天堂说道:

    很抱歉,这道测试题确实有些歧义,在IE中是number,但在其他浏览器中都是Error。至于其他浏览器为什么不支持这种定义方法,我也讲不清楚。

  3. 赵弟栋说道:

    看看函数表达式