语言类型
静态语言:使用前就要确认变量数据类型的语言
Java、C#、C、C++、TypeScripts
动态语言:运行过程中才检查变量数据类型的语言<br> 可以保存不同类型的值
Python、Ruby、Perl、PHP、VB、JavaScript
隐式类型转换:偷偷转换的变量类型的行为
弱类型语言:支持隐式类型转换的语言<br> 即引擎运行时自己计算
JavaScript、VB、PHP、Perl、C、C++、TypeScript
强类型语言:不支持隐式类型转换的语言
Java、C#、Ruby、Python
闭包
正常情况是调用栈中的函数执行结束后,函数的执行上下文就会销毁,上下文中的变量也一同销毁。
子主题
如何产生
编译时,JavaScript引擎对内部函数进行词法扫描,发现引用了外部(可以是函数)的变量,引擎就判断这是一个闭包,会在堆空间创建一个 clourse(外部函数名) 对象(是一个内部对象,JavaScript无法访问),用来保存引用的外部函数的变量。
产生过程
栈空间,调用栈<br>call stack<br>
核心条件
预扫描内部函数
内部函数引用的外部变量保存到堆空间中