hey man,你认为你懂Js?

out_lier 发布于 2014/04/03 22:55
阅读 227
收藏 0
Quick test for real understanding of JavaScript core beyond closures and scopes. Here five small scripts. Try to answer what will be alerted in each case without running them in the console. Then you could create a test file and easily check your answers. Ready?
1) 

if (!( "a"  in window)) {  var a  =  1;}alert(a);
2)
var a  =  1, b  =  function a(x) { x && a(--x); };alert(a);
3) 
function
 a(x) {  return x  *  2;} var a;alert(a);
4)
function b(x, y, a) { arguments[ 2]  =  10; alert(a);}b( 123);
5)
function a() { alert( this);}a.call( null);

当当当当~~~~~~~~
1,2,3题全挂
4,5正确(第5题昨天才看过"use strict"模式下的js表现才答对)
答案:
1) undefined 百思不得其解,主要原因是"a" in window这个表达式因为后面的定义所以为true,所以a无法初始化,但是为毛"a" in window会是true呢?
2) 1,第二题和第三题类似,都不知道原因
3) a的函数表达式
4)这个貌似比较简单吧,arguments数组下标从0开始

5)[object window],js非严格模式下,传null过去this指向的是window对象。严格模式下this就会被禁用了。

帮我解答一下1,2,3题。 

加载中
0
leo108
leo108


1.if语句里面的var a实际上会被提到最前,所以等效于

var a;
if (!( "a"  in window)) {
  a  =  1;
}
alert(a);

第三题同理

2.这里的function a实际上是个匿名函数,虽然看上去不太像,但确实就匿名函数,等效于

var b=function(x){xxxx},和a一点关系木有

0
Arrowing
Arrowing

基本都是考察javascript基础

返回顶部
顶部