在Javascript中为未声明的变量分配属性

时间:2018-03-27 14:31:40

标签: javascript node.js

这段代码

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

产生以下输出:

0
1

执行此代码的情况如何,因为尚未声明在第一行count上分配uniqueInteger属性?

1 个答案:

答案 0 :(得分:3)

由于function hoisting

,这种情况正在发生

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

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