JavaScript变量提升与函数提升

Posted 江州益彤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript变量提升与函数提升相关的知识,希望对你有一定的参考价值。

  1. 变量声明提升
  • 通过var定义(声明)的变量, 在定义语句之前就可以访问到
    • 值: undefined
  1. 函数声明提升
  • 通过function声明的函数, 在之前就可以直接调用
    • 值: 函数定义(对象)
  1. 先执行变量提升。再执行函数提升
  2. 如果函数名和变量名相同,则函数会将变量覆盖
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变量提升与函数提升的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript变量提升与函数提升

JavaScript 变量提升,函数提升

JavaScript 变量提升,函数提升

JavaScript 变量提升的作用

JavaScript之变量提升

JavaScript学习手册(55)