Кожного разу, коли console.log
виконується, undefined
до журналу виводу додається рядок із заголовком.
Це трапляється як у Firefox, так і в Chrome у Windows і Linux.
Кожного разу, коли console.log
виконується, undefined
до журналу виводу додається рядок із заголовком.
Це трапляється як у Firefox, так і в Chrome у Windows і Linux.
console.log()
повертається undefined
.
Відповіді:
Якщо ви використовуєте console.log()
файл JS, цей undefined
рядок не слід додавати.
Якщо ви працюєте console.log()
з самої консолі, це має сенс. Ось чому: У консолі ви можете ввести ім'я змінної (наприклад, спробуйте ввести window
), і вона надрукує інформацію про неї. Коли ви запускаєте будь-яку функцію void (наприклад console.log) із консолі, вона також виводить інформацію про повернене значення, undefined
в даному випадку.
Я протестував обидва випадки на своєму Chrome (Mac версії 23.0.1271.101) і справді бачу undefined
рядок, коли запускаю його всередині консолі. Це undefined
також з'являється, коли я пишу цей рядок у консолі:var bla = "sdfdfs"
Хоча відповідь Talkol - це нормально, я намагаюся сказати це більш прямо:
JavaScript розроблений як динамічна мова, що означає, що тип (рядок, порожнеча, логічне значення ...) значення функції, що повертається, не визначений заздалегідь. Якщо функція не використовує оператор return або порожній оператор повернення без значення, JavaScript автоматично повертає невизначений. Це означає, що в JavaScript кожна функція повертає щось, принаймні невизначене.
Отже, функція console.log()
в консолі Chrome або використовує відсутність, або порожній оператор повернення, так що значення повернення цієї функції не визначено. Повернене значення цієї функції також відображається на консолі Chrome.
[Якщо хтось знає, де знайти визначення console.log()
функції у вихідному коді Google Chrome, будь ласка, прокоментуйте за посиланням, тоді ми можемо навіть піти далі і подивитися на реальний код, було б непогано.]
Джерела:
Дотримуйтесь малюнка, щоб вирішити цю проблему:
Ctrl + Shift + J
Консольне середовище у вашому браузері призначене для отримання останнього виразу оператора в програмі та оцінки його за значенням, а потім показати вам це значення.
Результатом виразу присвоєння є значення, яке було призначене. Отже, механізм JavaScript просто виконує призначення, але консоль робить один додатковий крок, який полягає у встановленні будь-якого мого останнього твердження, повертає вам це значення. Ось чому друкується 2:
У твердженнях, які не мають поверненого значення, ви отримуєте щось на зразок невизначеного.
a=2
повертає 2, а var b=2
нічого не повертає? (Я здогадуюсь, оскільки =
це оператор, який повертає значення, але чому він не робить те саме у заяві про оголошення?)
Що ви можете зробити, це просто створити власну функцію, подібну до console.log, із поверненням, щоб змінити цю поведінку, виконуючи велику кількість кодування на консолі розробника. Ось приклад того, як це виглядає на консолі розробника:
console.log('I hate seeing the next line stating the obvious.')
I hate seeing the next line stating the obvious.
undefined
log = function(l){return l}
function log()
if(1 === 2){console.log('1 is not equal to 2.')}else{log('No Shit Sherlock.')}
"No Shit Sherlock."
undefined
- це повернене значення console.log () в інструментах розробника Chrome. Ви отримаєте невизначену, якщо зробите наступне в інструментах розробника Chrome, і побачите, що отримаєте невизначену, хоча x має значення 3.
> let x = 3
> undefined