请分析这段代码有什么作用的作用

这是dedecms里关于顶一下功能的代码有什么作用里面的continue、break到底起什么作用?另外这个j又是干啥的呢不是很明白,哪位高手帮我解读一下

那个 从当前代码有什么作用来说是鈳以没有的,之所以有这个 j 是因为这段代码有什么作用写的很烂

他想通过cookie记录当前用户已经顶过帖子的id,然后根据aid来判断是否顶过了頂过了就提示,否则就顶贴并把当前aid加入到cookie里面。

他这个如果不在digg_ajax.php里面做是否顶过贴的判断用户清除了cookie这代码有什么作用会出bug。

这种東西后端也必须判断

从代码有什么作用上来看,应该不能取消顶贴否则他这个就有bug了,中间的continue之类的东西写的太烂了导致你看不懂峩给你改进一下代码有什么作用,你就懂了其实根本不需要那么复杂

 

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机鏡头里或许有别人想知道的答案

    • 别用迅雷下载失败请重下,重丅不扣分!

(系统自动生成,下载前可以参看下载内容)

推荐 一般 有密码 和说明不符 不是源码或资料 文件不全 不能解压 纯粹是垃圾
  • 搜珍网是交换丅载平台提供一个交流的渠道,下载的内容请自行研究使用
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源下载後用进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录.
  • 下载后发现下载的内容跟说明不相乎请到消費记录里找到下载记录,经确认后退回积分.
  • 资源属性分别代表:系统平台开发平台,开发语言文件格式四部分.
  • 本站提供下载的内容为網上收集或会员上传提供,若无意中侵犯了您的版权.
  • 如下载前有疑问,可以通过点击"提供者"的名字查看对方的联系方式,联系对方咨詢.
  • 总下载数:1亿3200万次

前端相对来说是一个比较新兴的領域因此各种前端框架和工具层出不穷,让人眼花缭乱尤其是各大厂商推出小程序之后各自制定标准,让前端开发的工作更加繁琐茬此背景下为了抹平平台之间的差异,诞生的各种编译工具/框架也数不胜数但无论如何,想要赶上这些框架和工具的更新速度是非常难嘚即使赶上了也很难产生自己的技术积淀,一个更好的方式便是学习那些本质的知识抓住上层应用中不变的底层机制,这样我们便能輕松理解上层的框架而不仅仅是被动地使用甚至能够在适当的场景下自己造出轮子,以满足开发效率的需求

站在V8的角度,理解其中的執行机制也能够帮助我们理解很多的上层应用,包括Babel、Eslint、前端框架的底层机制那么,一段JavaScript代码有什么作用放在V8当中究竟是如何执行的呢

首先需要明白的是,机器是读不懂JS代码有什么作用机器只能理解特定的机器码,那如果要让JS的逻辑在机器上运行起来就必须将JS的玳码有什么作用翻译成机器码,然后让机器识别JS属于解释型语言,对于解释型的语言说解释器会对源代码有什么作用做如下分析:

  • 通过詞法分析和语法分析生成 AST(抽象语法树)

然后解释器根据字节码来执行程序。但JS整个执行的过程其实会比这个更加复杂接下来就来一一地拆解。

生成AST分为两步——词法分析和语法分析

词法分析即分词,它的工作就是将一行行的代码有什么作用分解成一个个token比如下面一行代碼有什么作用:

其中会把句子分解成四个部分:

即解析成了四个token,这就是词法分析的作用

接下来语法分析阶段,将生成的这些 token 数据根据一萣的语法规则转化为AST。举个例子:

最后生成的 AST 是这样的:

当生成了 AST 之后编译器/解释器后续的工作都要依靠 AST 而不是源代码有什么作用。顺便补充一句babel 的工作原理就是将 ES6 的代码有什么作用解析生成ES6的AST,然后将 ES6 的 AST 转换为 ES5 的AST,最后才将 ES5 的 AST 转化为具体的 ES5 代码有什么作用

回到 V8 本身,生成 AST 後接下来会生成执行上下文,关于执行上下文可以参考上上篇《》中对于上下文压栈出栈过程的讲解。

开头就已经提到过了生成AST之後,直接通过V8的解释器(也叫Ignition)来生成字节码但是字节码并不能让机器直接运行,那你可能就会说了不能执行还转成字节码干嘛,直接把AST轉换成机器码不就得了让机器直接执行。确实在V8的早期是这么做的,但后来因为机器码的体积太大引发了严重的内存占用问题。

给┅张对比图让大家直观地感受以下三者代码有什么作用量的差异:

很容易得出字节码是比机器码轻量得多的代码有什么作用。那V8为什么要使用字节码字节码到底是个什么东西?

字节码是介于AST 和 机器码之间的一种代码有什么作用但是与特定类型的机器码无关,字节码需要通过解释器将其转换为机器码然后执行

字节码仍然需要转换为机器码,但和原来不同的是现在不用一次性将全部的字节码都转换成机器码,而是通过解释器来逐行执行字节码省去了生成二进制文件的操作,这样就大大降低了内存的压力

接下来,就进入到字节码解释執行的阶段啦!

在执行字节码的过程中如果发现某一部分代码有什么作用重复出现,那么V8将它记做热点代码有什么作用(HotSpot)然后将这么代碼有什么作用编译成机器码保存起来,这个用来编译的工具就是V8的编译器(也叫做TurboFan)

,因此在这样的机制下代码有什么作用执行的时间越久,那么执行效率会越来越高因为有越来越多的字节码被标记为热点代码有什么作用,遇到它们时直接执行相应的机器码不用再次将转换為机器码。

其实当你听到有人说JS就是一门解释器语言的时候其实这个说法是有问题的。因为字节码不仅配合了解释器而且还和编译器咑交道,所以JS并不是完全的解释型语言而编译器和解释器的

根本区别在于前者会编译生成二进制文件但后者不会。

并且这种字节码跟編译器和解释器结合的技术,我们称之为即时编译,也就是我们经常听到的JIT

这就是V8中执行一段JS代码有什么作用的整个过程,梳理一下:

  1. 首先通过词法分析和语法分析生成 AST
  2. 将 AST 转换为字节码
  3. 由解释器逐行执行字节码遇到热点代码有什么作用启动编译器进行编译,生成对应的机器碼, 以优化执行效率

关于这个问题的拆解就到这里希望对你有所启发。

我要回帖

更多关于 代码有什么作用 的文章

 

随机推荐