深入理解javascript函数内部原理
文章平均质量分 66
深入到ECMAScript5.1规范中去认识js函数。从函数创建声明到执行过程全方位剖析,并且从中也能够学到this、call、new运算符等原理。为很好的使用j、面试提供、阅读框架源码很好的帮助。
茂树24
这个作者很懒,什么都没留下…
展开
-
babel 原理与演进
什么是 babel官网上的定义是 babel 是一个 JavaScript 编译器,具体来说,babel 是一个工具用于将 ECMAScript 2015+ 语法编写的代码转化成向后兼容的 JavaScript 语法,以便于能够运行在当前或者旧版本浏览器或其他环境中。如图所示先来回顾下 v8 执行 js 代码的整体流程,有一段 js 代码经过词法分析将代码解析成几个 token,然后经过语法分析生成一棵 AST 数,再经过语义分析解析出作用域、领域等上下文环境。最终生成中间代码的形态(中间代码可能是..原创 2021-08-19 23:10:02 · 3645 阅读 · 0 评论 -
深入理解函数内部原理(1)——函数定义、调用、解析、执行
在阅读本博客之前先阅读: 执行环境: http://blog.csdn.net/wmaoshu/article/details/60466990 引用规范类型:http://yanhaijing.com/es5/#80 本系列博客主要说一下一个函数从定义到调用到解析到执行的过程,以便于更好的理解后续介绍的闭包、this等概念。先介绍内部原理,然后通过一个实例说明一下这个原理。然后是一些对这个原原创 2017-03-05 17:38:37 · 3682 阅读 · 1 评论 -
深入理解函数内部原理(2)——对一个函数实例进行深入的分析
在阅读本博客之前先阅读: 深入理解函数之函数定义、调用、解析、执行 解剖http://blog.csdn.net/wmaoshu/article/details/60469571 本博客是使用一个例子来对这个博客的进行说明例子如下:<script>"use strict";var scope = "global scope";var o = {"checkscope":(functio原创 2017-03-07 15:40:00 · 1626 阅读 · 0 评论 -
深入理解函数内部原理(3)——动态的this
在阅读本博客之前先阅读: 深入理解函数之函数定义、调用、解析、执行 解剖http://blog.csdn.net/wmaoshu/article/details/60469571 深入理解函数之对一个函数实例进行深入的分析本博客主要是深入讨论下js中this相关的东西。JS中this是什么正如在前面博客 执行环境 http://blog.csdn.net/wmaoshu/article/detai原创 2017-03-07 11:48:12 · 568 阅读 · 1 评论 -
深入理解函数内部原理(4)——通过new操作符调用构造函数
以new Experssion(args) 过程一:先确定是否是一个构造函数 先解析Experssion比姑且通过getValue方式取得该值F,通过判断这个值F是否是一个对象,并且这个对象F是否具有Construct内部方法,如果是的话证明是一个函数,否则抛出一个TypeError异常。过程二:调用函数内部方法[Construct] 这个方法中分为如下几个过程: (1)创建一个空的对象ob原创 2017-03-08 11:05:22 · 1033 阅读 · 0 评论 -
深入理解函数内部原理(5)——闭包
什么是闭包其实通过前面几篇博客系统的介绍了函数的定义调用执行过程之后,带现在应该可以隐隐约约的感觉的闭包的存在了。 什么是闭包呢?我的理解就是 函数定义的时候的作用域链在函数调用的时候依然有效,这就是闭包。 那么js内部是怎么实现的呢?还记得函数对象有一个内部属性是[Scope]吗?挡在函数创建的时候,这个内部属性背赋一个值,这个值就是函数所在的执行环境的此法环境也就是说外部的作用域,对于具名的原创 2017-03-08 15:02:49 · 751 阅读 · 0 评论 -
深入理解函数内部原理(6)——函数的内部方法call、apply、bind
call和apply这两个方法都是打破了解析器在函数调用时创建执行环境时赋值this绑定的时候的内部规则,直接通过Function内置标准类型的prototype属性中的两个方法call和apply进行明确的声明this的值。 但是这里的call是自定义的用户可以使用的可以编程的,还有任何一个函数都有内置属性[[Call]],这两者不同。后者内部原理性的调用,创建执行环境的。 具体表述下call原创 2017-03-08 21:22:31 · 3151 阅读 · 0 评论