BPM配置故事之案例8-根据表单数据调整审批路线

线路条件2

复习作用域

落得同节省咱们说及作用域:是依赖变量可以拜的界定,他确定了如何寻找变量,以及确定当前实施代码对变量的看权限;也说及静态作用域即词法作用域,是在编译阶段决定变量的援(由程序定义的位置决定,和代码执行顺序无关,用嵌套的艺术分析)。

Boss突然来:小明啊,咱们的战略物资申请金额现在既可以规定了,以后金额在1万之下的申请单,就无须自审批了。直接通过就尽了。

引出作用域链

由此分析作用域的变量解析来理解作用域链

 1  var a=10;
 2     function run(){
 3         var name='Joel';
 4         function say(){
 5             var content='hello';
 6             console.log(content+name+','+a);
 7         }
 8         say();
 9     }
10     run();//helloJoel,10

5588葡京线路 1

经上一样篇我们掌握js作用域有全局作用域,函数作用域,所以地方代码作用域如下:

大局作用域:存在变量a、run函数引用,当然还留存任何函数、属性(内置的饶未讨论了);

run函数作用域:存在变量 name 、say函数引用;

say函数作用域:存在变量content;

当代码执行到 console.log(content+name+’,’+a);
首先在say函数作用域中查找变量content、name、a,如果找到则停,没有找到就交直达一个作用域中寻找,以此类推一直顶window
全局作用域,如变量a 在目前say
作用域中没有,就到run作用域中搜索,还未曾找到就交全局作用域中追寻,如果还摸索不顶即报错 is
not defined,因为全局作用域是最为外层作用域 ;

继往开来羁押下代码,我们于say函数中定义了变量name
之后,name值不在是run作用域中之价,因为在say作用域中找到了变量name
就无见面延续找了

 1 <script>
 2     var a=10;
 3     function run(){
 4         var name='Joel';
 5         function say(){
 6             var content='hello',name=' Word';
 7 
 8             console.log(content+name+','+a);
 9         }
10         say();
11     }
12     run();//hello Word,10
13 </script>

如此平等步一步的搜变量的进程我们誉为标识符解析或者你可以了解为变量解析,那么提供这路要这样找变量的机制我们称为作用域链;

咱们来总一下斯过程:

首先步,在眼前图域查找变量,如果生则获得并已。如果无则继续进步一个作用域寻找;

仲步,如果手上作用域是大局作用域,则证明变量未定义,结束;否则继续;

老三步,(不是全局作用域,那就是是函数作用域)继续第一步;

那作用域链到底是呀也?

实则作用域链本质是一个对变量对象的指针链表,它只有援引但不实际包含变量对象的价值;

假若齐代码作用域链结构类似这样:

5588葡京线路 2

立首就是引出作用域链,下同样首正式开始说执行环境,会涉及到变量对象、活动目标、作用域链等内容从而深入作用域链的创建进程。

因此要先勾勒尽环境,是为整体的作用域链是当履环境遭到构建的。

路线5588葡京线路条件1

疑问

1     var x=10;
2     function run(){
3         var name='Joel';
4         console.log(x+name);//10Joel  这里做了隐适转换 当有+时有一个为string 那么会当做字符拼接来处理
5     }
6     run();

若果达到代码,在执行run函数时,在run作用域中有name变量,但是并无变量x,那么为什么未见面报错,变量x又是怎么拜的吗?可能有些人知晓是失去父级函数作用域中寻找变量,其实这么懂作用域存在歧义(如果知道呢是以调用函数的父级函数,那么早晚是拂的
 如下代码),上同一节咱们说过javascript的作用域是静态作用域,即当关心代码定义的职而未是调用的职务 (词法作用域);

 1     var x=10;
 2     function fn(){
 3         console.log(x);
 4     }
 5     function show(f){
 6         var x=20;
 7         (function(){
 8             f()
 9         }());
10     }
11     show(fn);//10 并不是20

 5588葡京线路 3

 5588葡京线路 4

 

接下来小明把流程线路变更成为了这样.

小明:好的