var a = 0;

b = 0;

function A(a) {

       A = function (b) {

       console.log(a + b++)

      }

console.log(a++)

}

A(1)

A(2)

JavaScript特性:
闭包机制:闭包创建后,可以保存创建时的活动对象。
自加操作符:++,当++作为后缀操作符时,调用++的表达式的值为自加前的自加对象的值。

此处说明 ++操作符的特性。
var i = 0;
var eg = i++
console.log(i, eg) // 1 0

 

 第一次调用A时,执行到console.log(a++)时,a已经完成自加,此时a的值为2,a++的值为1。

A(1)=1

 第二次调用A时,A已经被重新赋值,指向了一个新的函数引用;

 由于标识符A是在全局作用域定义的,所以在函数内部被重新赋值,在全局作用域也可以访问到重新赋值后的函数。

 此时,也创建了一个闭包,该闭包保存了创建环境的活动对象。

 此时活动对象:{ a: 2 },同时,根据传入的数值2,确定 b = 2,b++值为3。

 执行到 console.log(a + b++),故而输出4

A(2)=4

技术
©2019-2020 Toolsou All rights reserved,
python中delete怎么用_python中如何使用np.delete()方法?大厂Java岗春招必看:论一个面渣逆袭之路上必学得那些知识点3 4j不是合法的python表达式_3+4j不是合法的Python表达式。SQL综合题 员工单位综合题pyqt按钮调用python程序_PyQt:链接按钮到程序中的函数找出游戏的获胜者(java)看完这个去面试,稳过~~将硬盘转换成GPT分区格式python常用内置函数C语言(猜数字小游戏)