我是靠谱客的博主 怕黑洋葱,最近开发中收集的这篇文章主要介绍JavaScript的理解个人对JavaScript的理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

个人对JavaScript的理解

web开发离不开html,css和JavaScript。html作为页面最基础的骨架,css则是起到修饰的作用,相当于是页面的皮囊,而js则是使得页面能够与用户进行交互,使得页面具有了“生命”,可以称为是页面的灵魂。三者缺一不可,以目前的技术html/css完全是可以通过计算算法分析图片直接生成出来,而js目前还是无法直接生成出来的,所以他们的重要性孰轻孰重可想而知。想要做好web开发,js是重中之重。

学习js最好买一本工具书,目前我使用的是《JavaScript高级程序设计–第4版》,一本工具书可以作为开发时的资料去查询,也可以作为一本教程去学习。

js是这样定义的

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。

1.函数优先:指的是变量函数声明优先级提高 (变量提升/函数提升)
2.轻量级:语法简单,弱类型的变量类型,基于Java基本语句和控制的脚本语言,其设计简单紧凑,学了java,js看一下就能上手。
3.解释型:读一行解释一行,不用编译

此外js的跨平台性也很好,因为只要有浏览器或者node就能运行。

js的组成

ECMAScript,描述了该语言的语法和基本对象。
文档对象模型(DOM),描述处理网页内容的方法和接口。
浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。

ES-> 基础语法
DOM-> 操作网页包括(html/css)等
BOM-> 操作浏览器 (window,history,console)等

我们的学习也要分为这3块来学习。

js执行方式

js是一个单线程的语言,js的执行机制是EventLoop(事件循环)。
单线程意味着同一时间只能做一个事,上一个事没做完,下一个事不允许做。(阻塞)但是我们看到的网页往往是“多线程”的,比如可以一边发请求,一边通过页面聊天,一边进行一些交互,其实这是用到了异步操作,和EventLoop,其本质还是单线程的。

为什么js要设计成单线程呢?

最初设计JS是用来在浏览器验证表单操控DOM元素的是一门脚本语言,如果js是多线程的,那么两个线程同时对一个DOM元素进行了相互冲突的操作,那么浏览器的解析器是无法执行的。

什么是异步操作?

说到异步操作就要说同步操作,同步操作就是只代码自上而下按顺序执行,一旦遇到错误,后续代码无法执行。但是这是我们在程序中不希望看到的,哪怕代码执行错误,也要执行后续代码,这样用户就不会因为一个错误导致程序无法操作了。

如何实现异步操作?

主要是靠EventLoop机制来实现的。
我们可以将js中的任务分为同步任务,和异步任务。
同步任务是在主线程上执行,异步任务则是进入一个任务队列。异步任务又可以分为宏任务/微任务。宏任务有自己的宏任务队列,微任务也有自己的微任务队列。

常见的宏任务有script,setTimeout,setInterval,io操作等
常见微任务有promise.then(),Object.observe()

执行流程:首先会执行script,也就是浏览器中js最外层的<script>标签,这时候遇到同步任务就执行同步任务,遇到宏任务将宏任务放入宏任务队列,遇到微任务将微任务放入微任务队列(注意宏任务和微任务都是先放入队列,还没执行)然后第一次事件循环执行结束。这时候开始执行第二次事件循环,会先将宏任务队列里的第一个任务拿出来,然后执行同步任务,再把第一次事件循环中的微任务队列中的所有任务清空(按加入顺序执行),然后,遇到宏任务将宏任务放入宏任务队列,遇到微任务将微任务放入微任务队列,等所有同步任务和上一次微任务队列清空后执行该执行栈中的宏任务。同理直到宏任务队列清空为止。

最后

以上就是怕黑洋葱为你收集整理的JavaScript的理解个人对JavaScript的理解的全部内容,希望文章能够帮你解决JavaScript的理解个人对JavaScript的理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部