链家网笔试

来源:互联网 发布:期货决策软件 编辑:程序博客网 时间:2024/06/06 05:09

编程语言竟然没有js通道~~~

  1. var foo = 1;
    function main(){
    alert(foo);
    var foo = 2;
    alert(this.foo);
    this.foo = 3;
    }
    main();
    new main();

    //输出 undefined 1 undefined undefined
    解释:执行main函数,首先在改函数作用域中,变量foo会声明提前,故第一个输出undefined;而此时的this指向window,故第二个输出1;
    执行new main() 把main当做一个构造函数,第一个foo同理输出undefined,第二个输出undefined是因为此时的main实例化了一个对象,this指向该实例,而此对象的foo还没有定义

  2. !(3<=1);
    true
    (4>=4)&&(5<=2);
    false
    ("a"=="a")&&("c"!="d");
    true
    (2<3)||(3<2);
    true

    && 若前面的结果为true,不论后面是true还是false,结果为后面的值;
    若前面的结果为false,不论后面是true还是false,结果为前面的值;
    || 若前面的结果为true,不论后面是true还是false,结果为前面的值;
    若前面的结果为false,不论后面是true还是false,结果为后面的值;

  3. var v = 'cba';
    (function(){
    function A(){
    var v = "a";
    this.getVar = function(){
    console.log(v);
    }
    }
    function B(){
    var v = 'b';
    A.call(this);
    }
    var b = new B();
    b.getVar(); //输出a
    }());

    A.call(this); 实现了继承

  4. var a = 0;
    function A(){
    this.a = 1;
    setTimeout(function(){
    this.a = 2;
    try{
    this.b = "b";
    throw "";
    }catch(e){
    this.b = 'bb';
    }
    },0)
    this.b = "bbb";
    }
    var aa = new A();
    setTimeout(function(){
    console.log(aa.a); //1
    console.log(window.a); //2
    console.log(aa.b); //bbb
    console.log(window.b); //bb
    },0)

    这个题对最后一个输出没太懂~~~
原创粉丝点击