[理解JS的一些原理 | 青训营笔记]

63 阅读2分钟

理解一些JS的原理

JS的一些特点

单线程,动态,弱对象,面向对象,是一门解释性的语言,这门语言消耗的性能相较于C,C++,java这些语言是非常大的,最直观的体现就是在刷力扣的时候,一些题目的思路相同,用js和用其他语言一比较,js的耗时是其他语言的几倍甚至更加多。
浏览器本身不会执行JS代码,而是通过内置的JavaScript引擎(解析器)来执行JS代码。JS引擎执行代码时逐行解释每一句源码(转化为机器语言),然后由计算机去执行,所以JavaScript语言归为脚本语言,会逐行解释执行。

  • 浏览器应用程序接口API—— 浏览器内置的 API 提供了丰富的功能,比如:动态创建 HTML 和设置 CSS 样式、从用户的摄像头采集处理视频流、生成 3D 图像与音频样本等等。
  • 第三方 API —— 让开发者可以在自己的站点中整合其他内容提供者(Twitter、Facebook 等)提供的功能。
  • 第三方框架和库 —— 用来快速构建网站和应用。
    一个页面的行为可以由3个部分组成
    三大部分:ECMAScript(JavaScript语法)、DOM(页面文档对象模型)、BOM(浏览器对象模型)

作用域

在 JavaScript 中, 对象和函数同样也是变量。
在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。
JavaScript 函数作用域: 作用域在函数内修改。
JS的作用域中的全局作用域和局部作用域的理解可以和C语言的进行比较,他们有相似的地方,可以更好的理解JS的作用域。

JS的执行

JavaScript解析器在运行JavaScript代码的时候分为两步:预解析和代码执行
预解析 js引擎会把js 里面所有的 var 还有 function 提升到当前作用域的最前面
代码执行 按照代码书写的顺序从上往下执行
JS中有变量预解析的说法,例如通过var定义的变量,在定义语句之前就可以访问到就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作