概念:
函数声明的典型格式:
function functionName(arg1, arg2, …){}
函数表达式
函数表达式的典型格式:
var variable=function(arg1, arg2, …){}
两者区别:
一、Javascript引擎在解析javascript代码时会‘函数声明提升’(Function declaration Hoisting)
当前执行环境(作用域)上的函数声明,而函数表达式必须等到Javascirtp引擎执行到它所在行时,
才会从上而下一行一行地解析函数表达式
,二、函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以fn()形式调用 。
以下是两者差别的两个例子。
fn1();//不会报错,因为"提升了"函数声明,函数调用可在函数声明之前
functionfn1(){
console.log(“这里是函数声明”);
}
fn2();//会报错,变量fn2还未保存对函数的引用,函数调用必须在函数表达式之后
varfn2=function(){
console.log(“这里是函数表达式”);
}
关于立即执行函数的讨论
//情况1
//结果会被输出
varfn=function(){
console.log(“函数表达式赋值给一个变量”);
}();
//情况2
//结果不会被输出,JavaScript引擎只解析函数声明,忽略后面的括号,函数声明不会被调用
functionfn(){
console.log(“函数声明”);
}();
//情况3
//语法错误,匿名函数属于函数表达式,未执行赋值操作,不能被调用
function(){
console.log(“函数表达式”);
}();
函数表达式用法:
函数表达式调用:
const square = function(number) { return number * number; };
var x = square(4); // x gets the value 16