这段代码

uniqueInteger.count = 0;
function uniqueInteger() {
    return uniqueInteger.count++;
}
console.log(uniqueInteger());
console.log(uniqueInteger());


产生以下输出:

0
1


尚未声明在第一行count上分配uniqueInteger属性时如何执行此代码?

最佳答案

这是由于function hoisting

基本上,当您声明function时,它在概念上已移至代码的顶部(尽管这不是浏览器的字面意思,请查看以前的文档以获取有关此信息的更多信息),因此,我们可以将您的代码重写为以下流程:

function uniqueInteger() {
    return uniqueInteger.count++
}
uniqueInteger.count = 0;
console.log(uniqueInteger()) // 0
console.log(uniqueInteger()) // 1

10-07 13:26