整理几个被遗忘的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吗 为什么?