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
本文地址:https://blog.csdn.net/Web_J/article/details/107491532
如对本文有疑问, 点击进行留言回复!!
MFC的静态库.lib、动态库.dll(包含引入库.lib)以及Unicode库示例
CTF 刷题记录(一) 白云新闻搜索(手动与自动化SQL注入)
javascript如何使用函数random来实现课堂随机点名方法详解
网友评论