Почему «delete (arg)» не выдает никакой ошибки в функции и выдает вывод как «myVar»? - PullRequest
1 голос
/ 23 января 2020

Я ожидал вывода как ошибки, но вместо этого получил вывод 'my Var'. Может кто-нибудь объяснить, почему удаление внутри функции не выдало ошибку.

var a='myVar'
function test(arg){
delete arg;
return arg;
}
test(a); 



1 Ответ

0 голосов
/ 23 января 2020

В небрежном режиме оператор удаления возвращает true для всех случаев, кроме случаев, когда свойство является собственным ненастраиваемым свойством, и в этом случае возвращается false .

В строгом режиме выдается ошибка, если свойство является собственным ненастраиваемым свойством.

Дескриптор свойства имеет настраиваемое значение , Если true , свойство может быть изменено или удалено из соответствующего объекта.

Переменные, объявленные с var , имеют для настраиваемый значение false , (для необъявленных глобальных переменных установлено значение true)

В вашем коде delete возвращает false, но вы не проверяете его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...