预解释,作用域,闭包的理解

一、预解释,就是当代码执行的时候。对变量的预声明。

1、第一步是首先会查找带var和function关键字的代码。对其进行预声明的过程。

   对var的处理是先声明,然后赋值为undefined

   function的处理是声明并赋值。此处的赋值为为function开辟一个新的堆内存空间,用于存储函数体内的字符。注意此处的存储的就是字符串,并非js代码。只有在执行的时候才会转变为js代码。

二、作用域

  作用域和函数的定义有关系,和函数的执行没有关系。

三、闭包

  闭包其实可以理解为,每一个函数执行都是一个闭包。在javascript高级程序设计中的说法是:在一个函数中执行另一个函数。参照高级程序3版 P178。和权威指南6版p182

原文地址:https://www.cnblogs.com/dollarzhang/p/4682562.html