1. 1. 一.函数表达式两种定义方式
  2. 2. 二.闭包
    1. 2.1. 2.1 闭包与变量
    2. 2.2. 2.2 this
    3. 2.3. 内存泄露
Table of Contents ▼

函数表达式-JavaScript

一.函数表达式两种定义方式

  1. 函数声明

    
    function functionName(arg0,arg1,arg2){
    
        //函数体
    
    }
    
  2. 函数表达式

    
    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的时候,onceundefined;
用函数表达式时的时候需要注意执行顺序

二.闭包

2.1 闭包与变量

2.2 this

内存泄露

function assignHandler(){
  var element = document.getElementById('someElement');
  element.onclick = function(){
    alert(element.id);
  }
}