函数表达式-JavaScript
一.函数表达式两种定义方式
函数声明
function functionName(arg0,arg1,arg2){ //函数体 }
函数表达式
var functionName = function(arg0,arg1,arg2){ //函数体 }
函数声明提升
理解函数声明和函数表达式的区别的重要一点就是理解函数声明提升
函数声明提升 是指在执行代码之前,会先读取函数声明
const _ = {
once: once,
};
var once = function(func){
var flag = false;
var res;
return function(){
if(flag){
return res;
}
else{
flag = true;
res = func();
return res;
}
}
}
module.exports = _;
变量声明是提前了,但once: once
的时候,once
是undefined
;
用函数表达式时的时候需要注意执行顺序
二.闭包
2.1 闭包与变量
2.2 this
内存泄露
function assignHandler(){
var element = document.getElementById('someElement');
element.onclick = function(){
alert(element.id);
}
}