前端面试题总结一(js变量和函数声明提前相关)

Posted hongsusu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端面试题总结一(js变量和函数声明提前相关)相关的知识,希望对你有一定的参考价值。

好久没有更新博客了,^_^写写博客吧!下面是我总结的一些面试题,希望对大家有所帮助

(1)题目如下:

  alert(a)
  var a=1
  function a(){
    alert(a)
 }

好多人肯定会觉得输出的结果是undefined,那你就错了,因为function也要声明提前的所以输出的结果应该是::

? a(){
alert(a)
}

 

更有意思的来了如果我把上面的题改为如下:

alert(a)
function a(){
 alert(a)
}
var a=1

输出的结果应该是::

? a(){
alert(a)
}

 

注意:***函数提升优先级比变量提升要高,且不会被变量声明覆盖,但是会被变量赋值覆盖***

如果下面

alert(a)
function a(){
 alert(a)
}
var a=1
alert(a)

这个的输出结果为::

第一次输出::
? a(){
alert(a)
}

第二次输出::
1

 

(2)题目如下:

var foo = "function";

var foo;//它只是定义,全不会覆盖变量

alert(foo);//所以返回 function
 
(3)题目如下:
var getName = function(){
    console.log(2);
}
function getName (){
    console.log(1);
}
getName();
 
输出结果:
2
 
如果我稍作改动
foo(); 
var foo;
function foo(){
 console.log(1);
}
foo=function(){
 console.log(2);
}
其输出的结果::
1
处理过程为:
function foo(){
console.log(1);
}
var foo; //并不执行,重复的声明
foo();
foo=function(){
console.log(2);
}

***函数会首先被提升,然后才是变量***

 































以上是关于前端面试题总结一(js变量和函数声明提前相关)的主要内容,如果未能解决你的问题,请参考以下文章

JS万字整理JavaScript相关基础技术面试题总结 - 前端面试必备 - 基础知识总结 - 秋招冲鸭

前端面试题:JS中的let和var的区别

2022年最新前端面试题

前端面试题,js预处理部分小结,函数声明提升和变量声明提升

2022年最新前端面试题,持续更新

js预解析相关知识总结