[转] 考验你的JavaScript底细

时间:2023-12-26 15:54:37

http://sentsin.com/

尽管今日的JavaScript已经突飞猛进,但JS的许多特性仍然保留,以下题目并不是有意设坑,许多地方将验证你的JS底细,如果错了一半,请别告诉我你从事前端。

  1. 1.
    (function(){
    return typeof arguments;
    })();
    • "object"
    • "array"
    • "arguments"
    • "undefined"
  2. 2.
    var f = function g(){
    return 23;
    };
    typeof g();
    • "number"
    • "undefined"
    • "function"
    • Error
  3. 3.
    (function(x){
    delete x;
    return x;
    })(1);
    • 1
    • null
    • undefined
    • Error
  4. 4.
    var y = 1, x = y = typeof x;
    x;
    • 1
    • "number"
    • undefined
    • "undefined"
  5. 5.
    (function f(f){
    return typeof f();
    })(function(){ return 1; });
    • "number"
    • "undefined"
    • "function"
    • Error
  6. 6.
    var foo = {
    bar: function() {
    return this.baz;
    },
    baz: 1
    };
    (function(){
    return typeof arguments[0]();
    })(foo.bar);
    • "undefined"
    • "object"
    • "number"
    • "function"
  7. 7.
    var foo = {
    bar: function(){
    return this.baz;
    },
    baz: 1
    }
    typeof (f = foo.bar)();
    • "undefined"
    • "object"
    • "number"
    • "function"
  8. 8.
    var f = (
    function f(){
    return "1";
    },
    function g(){
    return 2;
    }
    )();
    typeof f;
    • "string"
    • "number"
    • "function"
    • "undefined"
  9. 9.
    var x = 1;
    if (function f(){}) {
    x += typeof f;
    }
    x;
    • 1
    • "1function"
    • "1undefined"
    • NaN
  10. 10.
    var x = [typeof x, typeof y][1];
    typeof typeof x;
    • "number"
    • "string"
    • "undefined"
    • "object"
  11. 11.
    (function(foo){
    return typeof foo.bar;
    })({ foo: { bar: 1 } });
    • "undefined"
    • "object"
    • "number"
    • Error
  12. 12.
    (function f(){
    function f(){ return 1; }
    return f();
    function f(){ return 2; }
    })();
    • 1
    • 2
    • Error (e.g. "Too much recursion")
    • undefined
  13. 13.
    function f(){ return f; }
    new f() instanceof f;
    • true
    • false
  14. 14.
    with (function(x, undefined){}) length;
    
    • 1
    • 2
    • undefined
    • Error
思考题:
如何改变 undefined的typeof类型 ? (即 typeof undefined 或者 typeof(undefined) 都不为"undefined" )