JavaScript变量提升与函数提升
Posted 江州益彤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript变量提升与函数提升相关的知识,希望对你有一定的参考价值。
- 变量声明提升
- 通过
var定义(声明)
的变量, 在定义语句之前就可以访问到- 值: undefined
- 函数声明提升
- 通过
function声明
的函数, 在之前就可以直接调用- 值: 函数定义(对象)
- 先执行变量提升。再执行函数提升
- 如果函数名和变量名相同,则函数会将变量覆盖
console.log(hello);//undefined
var hello='hellojavascript';
console.log(hello);//hellojavascript
fun();//hellofun
function fun(){
console.log("hellofun");
}
fun();//hellofun
面试题1
1、先执行变量提升。再执行函数提升
2、如果函数名和变量名相同,则函数会将变量覆盖
function a(){}
var a;
console.log(typeof a)//function
面试题2
//变量声明提升
var a = 2
function fn () {
//var a;
console.log(a)
var a = 3 //变量声明提升
}
fn() //undefined
//函数声明提升
a2() // a2()
function a2() {
console.log('a2()')
}
综合题
function Foo() {
getName = function() {
console.log(1);
};
return this;
}
Foo.getName = function() {
console.log(2);
};
Foo.prototype.getName = function() {
console.log(3);
};
var getName = function() {
console.log(4);
};
function getName() {
console.log(5);
}
//请写出下列的输出结果
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();//new (Foo.getName)()==>new (function() {console.log(2)})()
new Foo().getName();//new (Foo()).getName()
new new Foo().getName();//new((new Foo()).getName)()==>new (foo.getName)()==>new (function() {console.log(4)})
以上是关于JavaScript变量提升与函数提升的主要内容,如果未能解决你的问题,请参考以下文章