整理几个被遗忘的js基础代码题,还都能答对吗?

整理几个被遗忘的js基础代码题,还都能答对吗?

我们每个人面试的时候,面试官都会问一些js基础的概念。比如说说你对闭包的理解,说说你对原型和原型链的理解,作用域和作用域链的理解,var、let、const的区别、promise的理解等等,相信这些概念性的东西,我们都能回答个八九不离十。

但如果面试官把这些概念性的问答,换成代码题让你来分析呢?是否还都能给出正确答案,并且说出为什么得出这个结果呢?

其实看代码,分析执行结果才是最考验人,是真是假一试便知啊。

作用域考察

下面代码输出什么?为什么?

如果这个题回答不准确,估计会被直接挂掉,毕竟太基础了。

第1题

var a=100 
function f1(){ console.log(a) } 
function f2(){ var a=200 f1() } 
f2()
var a = 100;

function f1() {
    console.log(a)
}

function f2() {
    var a = 200;
    f1();
}

f2();
var a = 100;

function f1() {
    console.log(a)
}

function f2(fn) {
    var a = 200;
    fn();
}

f2(f1);
var a = 100;

function f2() {
    var a = 200;

    function f1() {
        console.log(a);
    }
    return f1;
}

var f = f2();
f();

闭包考察

let x = 1;
function A(y){
    let x = 2;
    function B(z){
        console.log(x+y+z); //会输出什么? 为什么?
    }
    return B;
}
let C = A(2);
C(3);

原型考察

var F = function () {}
Object.prototype.a = function () {}
Function.prototype.b = function () {}

var f = new F()
console.log(typeof(f));

请问f有方法a  方法b吗 为什么?




原文地址:https://www.cnblogs.com/chucklu/p/14319020.html