经典笔试题

foo()
var foo

function foo() {
    console.log(1)
}

foo = function () {
    console.log(2)
}
console.log(foo)

function Foo() {
    getName = function () {
        console.log(1);
    };
    return this;
}

Foo.getName = function () {
    console.log(2);
};
Foo.prototype.getName = function () {
    console.log(3);
};
var getName = function () {
    console.log(4);
};

function getName() {
    console.log(5);
}

console.log(getName)

Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();


function Foo() {
    getName = function () {
        console.log(1);
    };
    return this;
}

Foo.getName = function () {
    console.log(2);
};
Foo.prototype.getName = function () {
    console.log(3);
};
var getName = function () {
    console.log(4);
};

function getName() {
    console.log(5);
}

console.log(Foo)
console.log(Foo.getName)


// -----------------------------------------------------------
// 1、
function A() {
    console.log(1)
}

function fn() {
    A = function () {
        console.log(2)
    }
    return this
}

fn.A = A
fn.prototype = {
    A: () => {
        console.log(3)
    }
}
console.log(fn.A === A)
console.log(fn)
console.log(fn.A === A)
console.log(fn.A === A)
    .console.log(typeof fn)

// 1,1 2 2 3 3

A()
fn.A()
fn().A()
new fn.A()
new fn().A()
new new fn().A()


// 2、 自执行函数中的this都指向window
var x = 2; // 4 16
var y = {
    x: 3,
    z: (function (x) {
        console.log(this)
        this.x *= x
        x += 2
        return function (n) {
            this.x *= n
            x += 3
            console.log(x)
        }
    })(x)
}

var m = y.z
m(4)
y.z(5)
console.log(x, y.x)


// 3、
// js== 比较规则
// 对象 == 字符串 -> 对象.toString()变为字符串再来比较
// null == undefined 相等,但是和其他值比较就不再相等了
// NaN == NaN  false  不相等
// 剩下的都是转换为数字进行比较 (引用类型和数字进行比较时,先执行toString方法,然后调用number(),最后再进行比较)

var a = '?'; // 如何设置a使下面的能够执行
a = {
    i: 1,
    toString() {
        return this.i++
    }
}
if (a == 1 && a == 2 && a == 3) {
    console.log(1) //
} else {
    console.log(2)
}


//4、
var x = 0, y = 1

function fn() {
    x += 2
    fn = function (y) {
        console.log(y + (--x))
    }
    console.log(x, y)
}

fn(3)
fn(4)
console.log(x, y)


//5、
setTimeout(() => {
    console.log(1)
}, 2)
console.log(2)
setTimeout(() => {
    console.log(3)
}, 10)
console.log(4)
console.time('Aa')
for (let i = 0; i < 900000; i++) {

}
console.timeEnd('AA')
console.log(5)
setTimeout(() => {
    console.log(6)
}, 800)
console.log(7)
setTimeout(() => {
    console.log(8)
}, 15)
console.log(9)

 

posted @ 2021-02-04 20:32  陈小作  阅读(114)  评论(0编辑  收藏  举报