javascript函数篇3、函数声明提高

变量提高想必你们都比较熟悉了,那么什么是函数声明提高呢? 首先咱们来了解下经常使用的两种函数定义方式:javascript

  1. 函数声明
  2. 函数表达式

下面来看下两种方式定义函数。java

函数声明语法定义函数
function fn (n) {
	return n * 2
}
复制代码
函数表达式定义函数
var fn = function (n) {
	return n * 2
}
复制代码

那么两种方式定义函数有什么区别呢? 对于函数声明与函数表达式两种定义函数的方式,解析器会率先读取函数声明,并使其在执行任何代码以前可用,这个过程叫函数声明提高,而函数表达式则是在真正执行到他所在的代码行,才会被解释执行。 看下例子就明白了:函数

fn(2)
function fn (n) {
	return n * 2
}
复制代码

上面的代码彻底能够正常运行,由于在代码开始执行以前,解析器已经进行了函数声明提高,将函数声明添加到执行环境中。 相反下面的代码则会报错:spa

fn(2)
var fn = function (n) {
	return n * 2
}
复制代码

由于,函数声明位于一个赋值语句中,实际上,这里进行的是变量提高,也就是变量fn被提高到顶部,但并未被初始化为函数对象,在执行fn(2)的时候,fn变量为undefined,代码执行到这里就会报错,不会继续往下执行了。code

总结:

函数声明提高指,当用函数声明语法定义函数时,解析器会在代码执行以前读取并将函数声明添加到执行环境,使其在执行任何代码以前可用。对象

相关文章
相关标签/搜索