我最近看到这个问题:
function compareMembers(person1, person2 = person) {
if (person1 !== person2) {
console.log('Not the same!');
} else {
console.log('They are the same!');
}
}
const person = { name: 'Lydia' };
compareMembers(person);
看到这个,我想知道person
如何成为person2
的默认值。
const
不像var
一样被提升。即使我想输入console.log(person)
在函数compareMembers
之前,我得到了引用错误。
如果有人能解释一下为什么这个函数可以访问person
作为默认值,那将是一个很大的帮助。
您的代码将运行如下:
- 存储变量栈(
compareMembers
,person
)。并引用堆内存 - 存储对象,堆内存函数(动态)
{ name: 'Lydia' }
和
function compareMembers(person1, person2 = person) {
if (person1 !== person2) {
console.log('Not the same!');
} else {
console.log('They are the same!');
}
}
然后运行Call Stack
- compareMembers(人)
您可以读取调用堆栈文档和堆栈和堆内存
JavaScript,如您所知,是逐行应用的在第一部分中,您创建了函数并在
中执行了所需的操作默认情况下接受用户的第一个输入和第二个输入,如果它不起作用,则用变量
填充它现在,在接下来的部分,你创建了一个变量,我的朋友,你给了这个输入一个函数,这实际上适用于你的两个输入,这是绝对正确的
它只在函数的相反条件下工作,如果你给出两个不同值的输入
我希望我能帮助到我的朋友