总结
学好编译原理。
动态类型语言与类型静态语言
JavaScript
和 Java
区别是啥?
老婆与老婆饼的区别。😬😬 说笑了~
动态类型语言给人的感觉好像是按行执行,执行到哪就干哪行的代码,静态类型语言先编译再执行。其实我觉得不全对,动态类型语言应该也有他对应的字节码。
变量提升
指的就是在 JS
里面用 var
关键字定义变量时会提升到最前面,这个过程在词法分析语法分析的时候已经做了,而不是在运行时
比如
1 | console.log(age) // undefined |
1 | if(!('a' in window)) { |
暂时性死区
与 var
的不同的是 let/const
声明的变量不会在作用域中被提升。所以在声明前访问会报错,这点和其他语言效果一样
1 | console.log(name) // undefined |