深入理解JS|青训营笔记

16 阅读4分钟

简单了解JS

JavaScript(JS)是一种脚本语言,由网景公司创造,其语法类似于Java、C++等传统的面向对象编程语言,但又具有自身特有的动态特性和灵活性。JS最早是用于网页交互的,随着Web技术的发展和普及,现在已经广泛应用于桌面应用、移动应用、游戏开发等领域。

JS的主要特性包括:

  1. 变量类型:JS是一种弱类型语言,可以自动根据值的类型进行数据类型转换,同时也支持原始类型和引用类型的变量。

  2. 对象:JS采用基于原型(Prototype)的面向对象编程模型,可以创建和操作多种类型的对象,如数组、函数、日期等。

  3. 事件:JS能够对网页上的各种事件进行处理,如单击、双击、鼠标移动等,可以为用户提供更加交互和丰富的界面。

  4. 异步:JS支持异步编程模型,可以实现多任务处理和事件驱动的编程方式,提高了程序的效率和质量。

  5. 操作DOM:JS可以通过文档对象模型(DOM)来操作网页的HTML、CSS、XML等标记语言,完成网页交互和动态呈现。

JS的框架和库众多,如jQuery、React、Angular、Vue等,可以帮助开发者更快速、高效地实现Web应用程序的开发。在未来,JS的发展趋势也将继续向着更加模块化、高性能和安全的方向前进。

JS的基本概念

  • 单线程
  • 动态,弱类型
  • 面向对象,函数式
  • 解释类语言,JIT
  • 安全,性能差
  • ...

变量提升

  • var有变量提升
  • let,const没有变量提升,提前访问会报错
  • function函数可以先调用再定义
  • 赋值给变量的函数无法提前调用

JS是怎么执行的

当JS引擎解析到可执行代码片段(通常是函数调用)的时候,就会先做一些执行前的准备工作,这个准备工作,就叫做"执行上下文(execution context简称EC)",也叫执行环境

  • 全局执行上下文:代码开始执行时就会创建,将他压入执行栈的栈底,每个生命周期内只有一份

  • 函数执行上下文:当执行一个函数时,这个函数内的代码会被编译,生成环境变量,词法环境等,当函数执行结束的时候该执行环境从栈顶弹出

  • 词法环境:基于ECMAScript代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法环境的空值组成

  • 变量环境:变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量(let和const)绑定,而后者只用来存储var变量绑定

  • Outer:指向外部变量环境的一个指针

JS的进阶知识点

this

普通函数的this指向Windows

  • 对象调用指向对象
  • 先赋值再调用,看调用的地方
  1. 创建临时对象
  2. 将this指向临时对象
  3. 执行构造函数
  4. 返回临时对象

总结与心得

作为一门广泛应用于网页交互和开发的脚本语言,JavaScript(JS)已成为Web前端开发不可或缺的技术,目前已经广泛应用于移动端应用、桌面应用、游戏开发等领域。

JS的优点主要包括以下几点:

  1. 易学易用:JS语法简单易懂,具备较高的可读性、可维护性和灵活性。

  2. 集成化:JS与HTML和CSS相结合,可实现全面的网页交互和用户体验,例如动态渲染、事件响应、表单验证等。

  3. 异步编程:JS异步编程模型和事件驱动模式使其能够高效地处理大量的交互请求和数据处理,提升了Web体验的速度与质量。

  4. 生态丰富:JS具有强大的生态和开发工具支持,例如Node.js、React、Angular等,可以帮助开发者更容易快速地进行项目编写和维护。

  5. 兼容性好:JS可以在各种浏览器和平台上运行,数据格式可以与其他后端语言进行交互,具有很高的兼容性。

但是,JS也存在一些问题和挑战。例如,JS在弱类型、隐式转换和变量作用域等方面存在一些易错点,需要开发者对代码质量和稳定性进行关注和优化。此外,JS的变化速度非常快,需要保持对新技术和编程规范的关注并不断学习和掌握。

总的来说,JS作为重要的Web开发工具之一,不断发展和壮大,未来也将继续引领Web技术的变革和创新。开发者需要不断学习和探索,拥抱JS的技术和发展潜力。