阿里巴巴2013年校园招聘前端工程师笔试题详解

一共十道题,其中非编程题有一半的样子,其余的编程题都还算简单,在此晒一下自己做的答案:

1、写一段脚本,实现:当页面上任意一个链接被点击的时候,alert出这个链接在页面上的顺序号,如第一个链接则alert(1), 依次类推;

这道题有点把我难住了,主要考的是循环中的闭包。。。。当时没做出来挺后悔

答案:

<a href="#">第一个链接</a>
<a href='#'>第二个链接</a>
<script>
window.οnlοad=function(){
var l=document.links.length
for(var i=0;i<l;i++){
document.links[i].οnclick=(function(x){
return function(){
alert(x+1);
}
})(i);
}

}
</script>

2、//现有代码如下

var foo = 1;

function main()

alert(foo)

var foo = 2;

alert(this.foo)

this.foo = 3;

}

//1.请给出以下两种方式调用函数时,alert的结果,并说明原因。 var m1 = main(); var m2 = new main(); //2.如果想要var m1 = main()产生的m1和前面的m2完全一致,又该如何改造main函数?

答案:

1、var m1=main()时,alert的结果是undefined和1,原因是首先在alert(foo)的时候,foo在main()函数域内还没有被定义,因此提示undefined,而在输出this.foo时,因为此时的函数执行环境是全局域,相当于window.main(),因此this=window,所以this.foo=window.foo=1
var m2=new main()时,alert的结果是undefined和undefined,第一个undefined的原因与前面一种情况相同,而第二个提示undefined的原因是在这种情况下用new构造了一个main()的实例,因此执行环境发生了改变,不再是全局域,而是m2,因此此时的this=m2,因此this.foo=m2.foo,但是由于在alert(this.foo)时,m2中的this.foo还未被定义,因此提示undefined
2、若要m1=main()与前面的m2产生的效果一致,则main()函数要修改成为function main(){alert(foo);foo=undefined;alert(this.foo);}即可

 

7、如果你现在使用的是 Google Chrome 或 Apple Safari,如何让 input 元素在默认情况下显示 “alipay WD Team”,而在光标移入后则显示空白?

答案:

<input id='test' type='text' placeholder='alipay WD Team' />

<script>
document.getElementById('test').οnfοcus=function(){this.value=" "};
</script>

 

其他题都还挺简单的,祝各位同学在找工作的路上好运!!

 




转载于:https://www.cnblogs.com/yingjun/p/3302437.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值