这段时间在忙着找前端方面的新工作,面试了几家公司,有大有小,也积累了一些面试经验。在这里分享几道出现频率比较高或者比较典型的一些JS基础方面的面试题,算是自己的一个总结。
**下面是具体的面试题**
1. 简述一下对JS变量提升的理解。
在非严格模式下,JS有变量提升的特点。
JavaScript的工作原理是先编译再执行,在编译的过程中,解释器会把所有的声明“移动”到作用域的最上方,而赋值和其他逻辑会留在原地。举一个最简单的例子:
x = 1;
console.log(x);
var x;
这段代码,最后输出的结果是1,其实逻辑是和下面这段代码相同的:
var x;
x = 1;
console.log(x);
但是需要注意的是:**JavaScript 只有声明的变量会提升,而初始化的不会提升。**再一个简单的例子:
console.log(a);
var a = 0;
此时输出的结果是undefined,此时这段代码可以理解为:只是提升了声明,但是没有提升赋值操作
var a;//undefind
cosole.log(a);
a = 0;
因此,输出结果才为undefined。
函数提升和变量提升相似。下面展示两段代码:
foo();
function