今天我们学习了深入理解js,由于时间关系,我们学习了js的一些比较基础却又十分重要的知识点。通过一些简单的代码讲述了变量提升、JS的数据是怎么存储的、基础数据类型和复杂数据类型的区别等一些基础知识,也讲解了JS的执行、闭包、垃圾回收等一些稍微进阶一些的知识。
在原来的基础上,数据类型分为基础数据类型和(复杂数据类型)对象,又学习了js的变量声明,字符串,作用域,数组,匿名函数,遍历对象,数组,内置对象,随机数。自己下来也去在原来老师讲授的基础上去了解了闭包。 “闭包(closure)就是能够读取其他函数内部变量的函数。在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成 “定义在一个函数内部的函数”。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。(闭包的最典型的应用是实现回调函数(callback) )。 最初的定义 闭包(closure),是指函数变量可以保存在函数作用域内,因此看起来是函数将变量“包裹”了起来。 执行:1.初始化全局对象:js引擎在执行代码之前,会在堆内存中创建一个全局对象:Global Object(GO)2.执行上下文:js引擎内部有一个执行上下文栈(Execution Context Stack,简称ECS,它是用于执行代码的调用栈。3.全局代码执行:在执行全局代码之前,创建了一个GO对象,里面有一些内置的对象,还有自己定义的变量,自己定义的变量普通类型都为undefined。全局执行上下文GEC中的VO就是GO对象。5.函数的执行过程:当执行过程执行到一个函数时,就会根据函数体创建一个函数执行上下文(Functional Execution Context,简称FEC),并且压进执行上下文栈ECS中。 js涉及的知识面十分广,还需要我们课后不断地扩展巩固。