面试实战篇(一)

Posted on 2017-04-12 11:58  NaN~  阅读(157)  评论(0编辑  收藏  举报

怎么就这么不喜欢手写代码,快把我的键盘拿来,一种当年模拟考试的感觉,就是当年坐在旁边的小鲜肉换成了程   序    猿。。。

1. 

原题:(function(){

    var a=b=9;    

})();

consolo.log(a);

console.log(b);

答案:a is no defined           9

解析:a is no defined 因为a在函数作用域中而且a用var定义,所以a的作用域在函数内,在函数外部是访问不到a的,所以a会报错

b是全局变量 所以指是9

2.

原题:编写函数sum,按照以下方式调用能正常运行:console.log(sum(2,3))//5  console.log(sum(2)(3))

答案:

function sum(a,b) {
return a+b;
}
console.log(sum(2, 3));

function sum(a) {
return function(b){
return a+b
}
}
console.log(sum(2)(3));
解析:第二个用到将函数作为返回值的思想,返回的是函数所以可以继续传值调用
3.

把地址按照转化成对应的json格式

答案:

var str="https://www.baidu.com/s?ie=utf-8&f=8&name=zhangsan&lise=28"
var str1=str.slice(str.indexOf("?")+1);
str2=str1.split("&");
var obj={};
for(var i=0;i<str2.length;i++)
{
var str3=str2[i].split("=")
obj[str3[0]]=str3[1]

}
console.log(obj);
解析:利用slice ,indexof,split就写呗 ,写呗。。。
利用indexOf找到?的索引,利用split从?下一位开始截取,用split根据&截取,返回截取后的数组
遍历数据,把每一项根据=截取,根据key value添加到obj对象中

4.

答案:5

解析:点谁都是5 ,因为for循环添加事件时瞬时的,再添加i的时候for已经循环完了,i的结果已经变成了5,所以想要按钮分别点击显示1,2,3,4,5就要用到闭包