JavaScript有很多地方和我们熟知的C、Java等的编程习惯不同,这些不同会产生很多让人意想不到的事情。前段时间在知乎有人发了写Javascrtip试题,觉得挺好玩的,这里跟大家分享一下。
01
view sourceprint?
1 (function () {
2 return typeof arguments;
3 })();
4
5 A. "object"
6 B. "array"
7 C. "arguments"
8 D. "undefined"
答案:A
02
view sourceprint?
1 var f = function g() {
2 return 23;
3 };
4 typeof g();
5
6 A. "number"
7 B. "undefined"
8 C. "function"
9 D. Eorror
答案:D
03
view sourceprint?
1 (function (x) {
2 delete x;
3 return x;
4 })(1);
5
6 A. 1
7 B. null
8 C. undefined
9 D. Error
答案:A
04
view sourceprint?
1 var y = 1,
2 x = y = typeof x;
3 x;
4
5 A. 1
6 B. "number"
7 C. undefined
8 D. "undefined"
答案: D
05
view sourceprint?
01 (function f(f) {
02 return typeof f();
03 })(function () {
04 return 1;
05 });
06
07 A. "number"
08 B. "undefined"
09 C. "function"
10 D. Error
答案:A
06
view sourceprint?
01 var foo = {
02 bar: function () {
03 return this.baz;
04 },
05 baz: 1
06 };
07 (function () {
08 return typeof arguments[0]();
09 })(foo.bar);
10
11 A. "undefined"
12 B. "object"
13 C. "number"
14 D. "function"
答案:A
07
view sourceprint?
01 var foo = {
02 bar: function () {
03 return this.baz;
04 },
05 baz: 1
06 };
07 typeof (f = foo.bar)();
08
09 A. "undefined"
10 B. "object"
11 C. "number"
12 D. "function"
答案:A
08
view sourceprint?
01 var f = (function f() {
02 return "1";
03 }, function g() {
04 return 2;
05 })();
06 typeof f;
07
08 A. "string"
09 B. "number"
10 C. "function"
11 D. "undefined"
答案: B
09
view sourceprint?
01 var x = 1;
02 if (function f() {}) {
03 x += typeof f;
04 }
05 x;
06
07 A. 1
08 B. "1function"
09 C. "1undefined"
10 D. NaN
答案: C
10
view sourceprint?
1 var x = [typeof x, typeof y][1];
2 typeof typeof x;
3
4 A. "number"
5 B. "string"
6 C. "undefined"
7 D. "object"
答案: B
11
view sourceprint?
01 (function (foo) {
02 return typeof foo.bar;
03 })({
04 foo: {
05 bar: 1
06 }
07 });
08
09 A、“undefined”
10 B、“object”
11 C、“number”
12 D、Error
答案: A
12
view sourceprint?
01 (function f() {
02 function f() {
03 return 1;
04 }
05 return f();
06
07 function f() {
08 return 2;
09 }
10 })();
11
12 A、1
13 B、2
14 C、Error (e.g. “Too much recursion”)
15 D、undefined
答案:B
13
view sourceprint?
1 function f() {
2 return f;
3 }
4 new f() instanceof f;
5
6 A、true
7 B、false
答案:B
14
view sourceprint?
1 with (function(x, undefined){}) length;
2
3 A、1
4 B、2
5 C、undefined
6 D、Error
答案:B
具体答案大家可以自己运行得出,为什么会得出这样的结果,我也有一些不懂的地方,怕误人子弟,所以这里就不解答这里的问题了。