日期:2014-05-16  浏览次数:20387 次

一道有趣的JS面试题

var a = {
    b : function() {
        alert(this.c);
    },
    c : 1
};

a.b();
(a.b)();
(a.b = a.b)();

请问以上输出是什么?

当你搞定上面这道之后,请再看下面这道题:

var foo = {
    bar: function () {
        return this.baz;
    },
    baz: 1
};
(function () {
    return typeof arguments[0]();
})(foo.bar);

A. "undefined"
B. "object"
C. "number"
D. "function"

第二道题出自http://www.nowamagic.net/javascript/js_PuzzleJavascriptQuiz.php

OK,如果你搞定了前两道题,看下下面这面原生的练习题(太臭美了,根本和上面几乎处处一致,奋斗):

var baz = 'laruence';
var foo = {
    bar: function () {
        alert(this.baz);
    },
    baz: 'll'
};
(f = foo.bar)();