函数与对其状态即词法环境(lexical environment)的引用共同构成闭包(closure)。也就是说,闭包可以让你从内部函数访问外部函数作用域。在JavaScript,函数在每次创建时生成闭包。
垃圾回收是一种自动的内存管理机制。当计算机上的动态内存不再需要的时候,就应当予以释放,以让出内存。直白点讲,就是程序是运行在内存里的,当声明一个变量、定义一个函数时都会占用内存。内存的容量是有限的,如果变量函数等只有产生没有消亡的过程,那内存总有会被完全占用的时候。这个时候,不仅程序自己无法正常运行,连其他程序都会受到影响。所以,在计算机当中,我们需要垃圾回收。需要注意的时候,JavaScript定义中的“自动”的意思是预言可以帮助我们回收内存垃圾,但并不代表我们不用关心内存管理,如果使用不当,JS中依旧会出现内存溢出的情况
在JavaScript有5个基本的简单数据类型:Number,String,Boolean,Null,Undefined 和一个复杂数据类型Object,其中**Null**和**Undefined**是最特殊的两个,在开发中经常会被搞混。
在JavaScript中咱们以前主要用关键var来定义变量,ES6之后,新增了定义变量的两个关键字,分别是let和const。对于变量来说,在ES5中var定义的变量会提升到作用域中所有的函数与语句前面,而ES6中let定义的变量则不会,let声明的变量会在其相应的代码块中建立一个暂时性死区,直至变量被声明。let和const都能够声明块级作用域,用法和var是类似的,let的特点是不会变量提升,而是被锁在当前块中。
The Closure Compiler is a tool for making JavaScript download and run faster. Instead of compiling from a source language to machine code, it compiles from JavaScript to better JavaScript. It parses your JavaScript, analyzes it, removes dead code and rewrites and minimizes what's left. It also checks syntax, variable references, and types, and warns about common JavaScript pitfalls.