写在前面
作为一门广泛应用于Web开发的编程语言,JavaScript在现代应用程序和互联网应用程序的设计和开发中扮演着至关重要的角色。
在学习和使用JavaScript的过程中,我得到了许多宝贵的经验和感悟。
一些感悟
JavaScript具有出色的灵活性和可适应
JavaScript可以作为一种独立的编程语言来使用,也可以嵌入到HTML和CSS中,以实现交互性和动态效果。此外,JavaScript还具有广泛的开发库和框架,可以简化代码编写和程序设计。
JavaScript可以帮助我们构建高性能的Web应用程序。
JavaScript运行在客户端上,可以直接访问浏览器的API,以实现动态的用户交互和响应式的UI设计。此外,JavaScript还可以进行异步编程和事件驱动编程,以提高Web应用程序的性能和响应速度。
js变量提升
JavaScript 中的变量提升是指在执行代码之前,JavaScript 引擎会将所有声明的变量和函数提升到作用域的顶部。也就是说,在代码执行之前,变量和函数已经被“声明”了。
- let、const没有变量提升,提前访问会报错function函数可以先调用再定义
- var变量有提升
- 赋值给变量的函数无法提前调用
e.g.
var x = 3;
function x() {
console.log('Hello, world!');
}
console.log(typeof x);
变量 x 和函数 x 都被声明了。由于函数声明的优先级更高,因此变量 x 的声明被覆盖了,typeof x 的值为 function。
执行上下文
JavaScript中的执行上下文是指在代码运行时创建的环境,用于存储代码执行所需的所有变量、函数和对象等信息。每当JavaScript引擎执行一段代码时,都会创建一个新的执行上下文。
执行上下文有三种类型:
- 全局执行上下文
- 函数执行上下文
- Eval执行上下文。
全局执行上下文
在JavaScript代码第一次执行时创建的执行上下文,它代表着整个程序的执行环境。在全局执行上下文中定义的变量和函数可以被整个程序访问。
函数执行上下文
每当一个函数被调用时,都会创建一个新的函数执行上下文。函数执行上下文是在函数内部创建的,包含函数的所有变量、函数和对象等信息。当函数执行完毕后,其执行上下文也会被销毁。
Eval执行上下文
当JavaScript代码通过eval()函数执行时,将会创建一个新的执行上下文,称为Eval执行上下文。
在每个执行上下文中,JavaScript引擎会创建一个变量对象(VO),用于存储执行上下文中定义的所有变量、函数和对象等信息。在函数执行上下文中,还会创建一个活动对象(AO),用于存储当前函数调用中的所有变量和参数。每个执行上下文还包含一个作用域链(Scope Chain),它用于解析变量和函数的引用。