JS:这段程序的输出是什么?为什么?

2025-05-05 14:44:40
推荐回答(1个)
回答1:

010

原因:
function运行时会有一个变量作用域,在function中定义的变量只在这个function中有效。Foo中的i就是这个变量。
当运行f1=Foo()时,产生一个i和一个匿名函数,这个匿名函数被赋值到f1上。所以f1和那个i是在一个作用域下。
f2被赋值的时候,也产生一个i和一个匿名函数,但这个函数和i与f1中的是两个域,彼此不干扰。
因此运行f1,f1的i会加1,运行f2,f2的i会加1。彼此不干扰。