前端笔试套题-2


一.速答题
1.
var a = "baidu";
var b = 222;
var c = [1,2,3];
var e = function () {alert(111);};
var f = function () {this.name="22";};

alert(typeof a);
alert(typeof b);
alert(typeof c);
alert(typeof d);
alert(typeof e);
答案 string number object undefined function

2.
var a = new String("baidu.");
var b = new Number(222);
var c = new Array(222,4,2);
var e = function () {console.log(111);};
var f = function () {this.name="22"};
var h = new Error("foo");

console.log(a instanceof String);
console.log(b instanceof Number);
console.log(c instanceof String);
console.log(h instanceof Function);
console.log(e instanceof Number);
console.log(f instanceof String);
//答案:true true false false false false false

 

二.过程题

1.
if('a' in window) {
var a = 10;
}
alert(a);

答案:10

 


2.
var length = 10;
function fn() {
console.log(this.length);
}

var obj = {
length: 5,
method: function(fn) {
fn();
arguments[0]();
}
};

obj.method(fn, 1);

答案 10 2


3.
function fun(n,o) {
console.log(o)
return {
fun:function(m){
return fun(m,n);
}
};
}
var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,?
var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?
var c = fun(0).fun(1); c.fun(2); c.fun(3);//undefined,?,?,?

问:三行a,b,c的输出分别是什么?

答案:undefined,0,0,0 undefined,0,1,2 undefined,0,1,1


4.
    function A(){

    }
    function B(a){

      this.a = a;

    }
    function C(a){
      if(a){
        this.a = a;
      }
    }
    A.prototype.a = 1;
    B.prototype.a = 1;
    C.prototype.a = 1;
    console.log(new A().a);
    console.log(new B().a);
    console.log(new C(2).a);
答案:
console.log(new A().a);  //new A()为构造函数创建的对象,本身没有a属性,所以向它的原型去找,发现原型的a属性的属性值为1,故该输出值为1;
console.log(new B().a);  //new B()为构造函数创建的对象,该构造函数有参数a,但该对象没有传参,故该输出值为undefined;
console.log(new C(2).a);  //new C()为构造函数创建的对象,该构造函数有参数a,且传的实参为2,执行函数内部,发现if为真,执行this.a = 2,故属性a的值为2;

 

故这三个的输出值分别为:1、undefined、2. 

三.简答应用题:

1.如何实现浏览器内多个标签页之间的通信?

答案:调用 localstorge、cookies 等本地存储方式

 

2.描述下CSS3里实现元素动画的方法

答案:略


3.请编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象,如: var url = "http://www.baidu.com?key0=0&key1=1&key2=2"
function parseQueryString(url) {
var obj = {};
var a = url.split('?');
if(a === 1) return obj;
var b = a[1].split('&');
for(var i = 0, length = b.length; i < length; i++) {
var c = b[i].split('=');
obj[c[0]] = c[1];
}
return obj;
}
var url = 'http://witmax.cn/index.php?key0=0&key1=1&key2=2';
var obj = parseQueryString(url);
console.log(obj.key0, obj.key1, obj.key2); // 0 1 2


四. 逻辑题

有一天,某一珠宝店被盗走了一块贵重的钻石。经侦破,查明作案人肯定在甲、乙、丙、丁之中。于是,对这四个重大嫌疑犯进行审讯。审讯所得到的口供如下: 甲:我不是作案的。 乙:丁是罪犯。 丙:乙是盗窃这块钻石的罪犯。 丁:作案的不是我。 经查实:这四个人的口供中只有一个是假的。那么,以下哪项才是正确的破案结果? (A)甲作案。 (B)乙作案。 (C)丙作案。 (D)丁作案。 (E)甲、乙、丙、丁共同作案。


看4个人说话,乙跟丁是矛盾的,所以在他们两个之间选,直接用假设
假如是丁说谎,那丁就是罪犯,与丙说的谎矛盾,所以不是丁
假如是乙说谎,那就是甲不是,丁不是,丙说是乙那也应该是真的
答案是乙

 

posted @ 2017-03-27 14:13  zero7酱紫  阅读(89)  评论(0编辑  收藏  举报