Как контролировать регистрацию изменений в стеке «Отменить» при использовании Core Data на MacOS? [Дубликат]

Вы должны знать о подъеме в JS. В принципе, такое объявление, как let a = werwr;

, интерпретируется как let a; a = werwr;

. И почему он уже объявлен при запуске второй строки кода.

UPDATE

Итак, в спецификациях ES есть [ПРИМЕЧАНИЕ] в спецификациях ES https://tc39.github.io/ecma262/#prod-LetOrConst

let и const объявляют переменные, которые привязаны к LexicalEnvironment исполняемого контекста выполнения. Переменные создаются, когда их содержащая Лексическая среда создается, но может быть недоступна каким-либо образом, пока не будет оценена LexicalBinding переменной. Переменной, определяемой LexicalBinding с инициализатором, присваивается значение его AssignmentExpression Initializer при анализе LexicalBinding, а не при создании переменной. Если LexicalBinding в объявлении let не имеет инициализатора, переменной присваивается значение undefined при оценке LexicalBinding.

blockquote>

...

" но может быть недоступен до тех пор, пока не будет оценен LexicalBinding переменной. означает, что объявление должно быть успешно завершено, прежде чем вы сможете получить доступ к переменной (либо получить значение, присвоить значение, либо сделать typeof, либо событие delete);

В вашем случае лексическая привязка переменной прерывается исключением.

let a = werwr // Uncaught ReferenceError: werwr is not defined

Пожалуйста, перейдите по ссылке и прочитайте об этом подробнее. Если вы найдете способ восстановить varaible a, скажите, пожалуйста. Спасибо, сегодня я узнал что-то новое о Javascript.

8
задан Matt Ball 23 April 2009 в 05:00
поделиться

1 ответ

Если вы погрузитесь глубже в документы Core Data, вы найдете этот лакомый кусочек скрытым:

[[self managedObjectContext] processPendingChanges];
[[[self managedObjectContext] undoManager] disableUndoRegistration];
// Do your work
[[self managedObjectContext] processPendingChanges];
[[[self managedObjectContext] undoManager] enableUndoRegistration];

Изменения не регистрируются менеджером отмены обычно до конца цикла событий, и поэтому регистрировались после , вы снова отменили регистрацию. Вышеуказанное заставляет его возникать, когда вы хотите.

19
ответ дан Mike Abdullah 21 August 2018 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: