«консоль» - неопределенная ошибка для Internet Explorer

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

Если вы хотите наблюдать коллекцию, которая отличается от коллекции, которую вы повторяете, вы должны вернуть новую коллекцию.

Например ..

IEnumerable<int> sequence = Enumerable.Range(0, 30);
IEnumerable<int> newSequence = new List<int>();

foreach (var item in sequence) {
    if (item < 20) newSequence.Add(item);
}

// now work with newSequence

Вот как вы должны «изменять» коллекции. LINQ использует этот подход, если вы хотите изменить последовательность. Например:

var newSequence = sequence.Where(item => item < 20); // returns new sequence
372
задан Sebastian Zartner 28 February 2017 в 08:09
поделиться

4 ответа

Попытка

if (!window.console) console = ...

На неопределенную переменную нельзя ссылаться напрямую. Тем не мение,все глобальные переменные являются атрибутами с тем же именем глобального контекста ( window в случае браузеров), и доступ к неопределенному атрибуту возможен.

Или используйте if (typeof console === 'undefined') console = ... , если вы хотите избежать магической переменной window , см. @Tim Down's ответ .

377
ответ дан 23 November 2019 в 00:01
поделиться

Другая альтернатива - оператор typeof:

if (typeof console == "undefined") {
    this.console = {log: function() {}};
}

Еще одна альтернатива - использование библиотеки протоколирования, например, моей собственной log4javascript.

73
ответ дан 23 November 2019 в 00:01
поделиться

В своих сценариях я либо использую сокращение:

window.console && console.log(...) // only log if the function exists

, либо, если невозможно или нецелесообразно редактировать каждую строку console.log, я создаю поддельную консоль:

// check to see if console exists. If not, create an empty object for it,
// then create and empty logging function which does nothing. 
//
// REMEMBER: put this before any other console.log calls
!window.console && (window.console = {} && window.console.log = function () {});
13
ответ дан 23 November 2019 в 00:01
поделиться

Вы можете использовать console.log(...) непосредственно в Firefox, но не в IE. В IE вы должны использовать window.console.

-10
ответ дан 23 November 2019 в 00:01
поделиться
Другие вопросы по тегам:

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