Используя следующий синтаксис:
( { type, status, appsInfo, device,managedApps,appName } = action);
Вы явно говорите "destructure action.status
к существующей переменной status
.
Если вы не 't уже имеет переменную с именем status
в локальной области видимости, тогда он попытается присвоить action.status
свойству window.status . Это свойство принимает только строку, поэтому, когда action
не имеетstatus
свойство, вы фактически сделали это:
window.status = undefined;
Поскольку window.status
приводит к строке, когда это считывается, вы получаете window.status === "undefined";
.
Даже еслиэто не имеет никакого эффекта на строке состояния в Firefox, оно все еще демонстрирует поведение.
Ваша вторая часть также ожидаемое поведение:
const { type, status, appsInfo, device,managedApps,appName } = action
Отличаетсяиз-за того, что вы объявляете переменную scoped с именем status
. В этом и заключается разница между браузерами. В Chrome, когда вы объявляете const status
в devtools, devtools считается «областью действия»и вы можете получить к нему доступ после того, как он объявлен.Тем не менее, вы можете объявить const
в Dev Tools, но вы никогда не сможете получить доступ к значению. Ссылка .
Итак, в Edge вы получаете такое поведение:
{
const status = action.status;
typeof status === "undefined"; // true
}
status; // The value of window.status. const status is out of scope