好久没有更新博客了,^_^写写博客吧!下面是我总结的一些面试题,希望对大家有所帮助
(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);
}
***函数会首先被提升,然后才是变量***
原文地址:https://www.cnblogs.com/hongsusu/p/9055513.html