通过 “函数对象”看javascript函数
#前言
javascript的行为
- scope
- 函数中的this
- 变量提升
- 作用域链本质
- 函数调用栈问题
- 函数柯里化本质
scope函数对象
- (1) 声明部分
- (2) 执行部分
声明部分:
包涵:
声明的内部函数,变量,参数,维护一个地址池,地址池里面的地址指向内部函数,变量和参数。
本质:就是函数对象的属性
执行部分:
包涵:
除了声明以外的计算过程都包含在这个里面
本质:就是函数对象的一个方法
参数部分
在调动函数部分时动态赋值
引擎发现下面这个函数声明
function funOut(arg,arg1){var prop = 0;function funInner(){console.log(porp1);}var props = 1;funInner();console.log(arg,arg1);
}
复制代码
总体经历了以下几步
1创建scope对象并创建地址池var funOut = {arg:null,arg1:null,prop:null,prop1:null,funInner:null,_props_:window,init:function(supperContext,arg,arg1){funOut. _props_ = supperContext||windowsfunOut.arg = arg,funOut.arg1=arg1,funInner = function(funOut,arg,arg1){funOut.arg = arg,funOut.arg1=arg1},},applay:function(){prop = 0;porp1 = 1;funInner();console.log(arg,arg1);},this:windows//因为funOut对用户不可见,this只是一个特殊的处理而已} 注:上面这个结构是引擎通过引擎内置语言实现的,对用户不可见,有可能是C也有可能是汇编这个不是重点
复制代码
函数中的this
- bind()
- apply()
- .
- call()
- =>
变量提升
其实到现在变量提升原因已经很明显了,函数对象不是js对象遵循其他编程语言规范
作用域链本质
函数调用栈问题
function cir(){cir()
}function cor(){setTimeOut(function(){cor},2000);return true;//cor函数执行到此处已经完结,弹出栈所以cor的深度是固定的
}
注意两则的本质区别
复制代码
函数柯里化本质
以上东西很多为个人臆测。如果有指导更正感激不尽!
转载于:https://juejin.im/post/5b42b607f265da0f9155f009
通过 “函数对象”看javascript函数相关推荐
- js执行oracle函数吗,执行javascript函数
JS--函数 JavaScript 函数语法 函数就是包裹在花括号中的代码块,前面使用了关键词 function: function 函数名([参数]){ 执行的代码: } 当调用该函数时,会执行函数 ...
- 王亟亟的Python学习之路(10)-函数对象的作用域,函数作为返回值,闭包
转载请注明出处:王亟亟的大牛之路 本来打算把工作的事周末做掉点,但是发现在外面浪并不能迅速集中投入,为了避免不必要的BUG 还是明天在家做吧,那么久写一篇Python的文章吧,毕竟背着Mac出门不做些 ...
- python使用复合语句def创建函数对象_Python 纯函数
Python 纯函数,函数式编程简洁明了,因为函数可以用作其他函数的参数或者返回值,后续会给出很多这样的例子. 要做到这一点,函数必须是运行时环境中的头等对象.在C等语言中,函数不是运行时中的对象,然 ...
- python 返回函数对象_返回函数
函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = ...
- 深入探讨JavaScript函数对象
人人生而平等,但有些人比其他人更加平等--奥威尔 函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解. javascript中的函数不同于其他的语言,它的每个函数都是 ...
- Javascript函数执行、new机制以及继承
JS函数执行 一个JavaScript函数fn,被执行有三种途径: fn() new fn() fn.call()或fn.apply() new机制以及继承 JavaScript中定义了一种对象,称之 ...
- 盘点JavaScript函数的基本知识
本文旨在提供web开发人员必须了解的所有JavaScript函数的基本知识. 函数于软件开发者而言并不是什么奇幻世界.如果你的日常活动涉及到编码,哪怕是一点点,那么在一天结束的时候,你一定创建/修改了 ...
- 菜鸟教程 之 JavaScript 函数(function)
From:https://www.runoob.com/js/js-function-definition.html JavaScript 函数定义 JavaScript 使用关键字 function ...
- JavaScript函数和BOM及DOM编程(详细总结-无尿点)
JavaScript函数和BOM及DOM编程(详细总结-无尿点) javascript 函数 一.javascript函数 1.1 概述 1.2 常见的系统函数 1.2.1 eval 1.2.2 pa ...
最新文章
- 如何访问webService接口
- 《PC World》:Linux在桌面市场毫无长进 已经死亡
- 多元统计分析matlab,MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法...
- 数据结构之图:图的搜索,Python代码实现——23
- mybatis sql linux,通用mapper生成sql及mybatis使用过程
- 服务器sxs文件通用的吗,win10x sources sxs文件有什么作用
- asp.net回调javascript
- java后台处理跨域问题_用cros解决前后端分离的跨域问题
- xp系统怎样添加桌面计算机,如何为XP系统计算机设置桌面
- acm 用java_acm竞赛中使用java是一种什么体验?
- win10错误代码0x0000011b怎么解决
- mysql的msi文件下载
- 电脑的dns服务器未响应怎么解决,电脑DNS服务器未响应怎么解决
- 如何用计算机计算log除法,电脑系统自带科学计算器使用方法
- Unity Layer预设 默认设置Layer
- consume(consume名词)
- 请收下这份秘籍: 这里有关于申请 gTech 职位所需知道的一切
- WebGIS第九课:智慧校园项目(1)
- Linux JKD1.8 安装及配置
- ttkbootstrap 学习