Apa itu console.log?

415

Apa gunanya console.log?

Tolong jelaskan bagaimana cara menggunakannya dalam JavaScript, dengan contoh kode.

Mihir
sumber

Jawaban:

455

Ini bukan fitur jQuery tetapi fitur untuk tujuan debugging. Misalnya Anda dapat mencatat sesuatu ke konsol ketika sesuatu terjadi. Contohnya:

$('#someButton').click(function() {
  console.log('#someButton was clicked');
  // do something
});

Anda kemudian akan melihat #someButton was clicked di tab "Konsol" Firebug (atau konsol alat lain - mis. Inspektur Web Chrome) ketika Anda akan mengklik tombol.

Untuk beberapa alasan, objek konsol mungkin tidak tersedia. Maka Anda dapat memeriksa apakah itu - ini berguna karena Anda tidak harus menghapus kode debug Anda ketika Anda menyebarkan ke produksi:

if (window.console && window.console.log) {
  // console is available
}
Jan Hančič
sumber
17
Alat Pengembang Google Chrome juga memiliki konsol yang terintegrasi.
RobertPitt
8
"Ini berguna karena Anda tidak harus menghapus kode debug Anda ketika Anda menyebarkan ke produksi" <- Bagaimana jika pengguna akhir membuka Firebug?
AbdullahC
6
ini juga berguna untuk tidak membiarkan IE membuat kesalahan untuk konsol yang tidak didefinisikan
Alan Whitelaw
4
Imho, lebih baik daripada memeriksa setiap kali jika console.log tersedia lebih baik untuk memiliki sesuatu seperti ini: if (typeof (console) == 'undefined') {console = {'log': function () {return}}} In kasus seperti itu Anda dapat menulis console.log setiap kali Anda perlu tanpa memeriksa keberadaannya!
Enrico Carlesso
12
if (console.log)(atau bahkan if (console && console.log)) masih akan melempar kesalahan jika konsol tidak tersedia. Anda harus menggunakan window.console(seperti windowyang dijamin ada) dan hanya memeriksa satu tingkat kedalaman pada satu waktu.
Tgr
226

Tempat Anda dapat melihat konsol! Hanya untuk memiliki semuanya dalam satu jawaban.

Firefox

http://getfirebug.com/

(Anda sekarang juga dapat menggunakan alat pengembang bawaan Firefox Ctrl + Shift + J (Alat> Pengembang Web> Konsol Kesalahan), tetapi Firebug jauh lebih baik; gunakan Firebug)

Safari dan Chrome

Pada dasarnya sama.

https://developers.google.com/chrome-developer-tools/docs/overview

https://developer.apple.com/technologies/safari/developer-tools.html

Internet Explorer

Jangan lupa Anda dapat menggunakan mode kompatibilitas untuk men-debug IE7 dan IE8 di IE9 atau IE10

http://msdn.microsoft.com/en-us/library/ie/gg589507(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/dd565628(v=vs.85).aspx

Jika Anda harus mengakses konsol di IE6 untuk IE7 gunakan bookmarklet Firebug Lite

http://getfirebug.com/firebuglite/ cari bookmarklet stabil

http://en.wikipedia.org/wiki/Bookmarklet

Opera

http://www.opera.com/dragonfly/

iOS

Berfungsi untuk semua iPhone, iPod touch, dan iPad.

http://developer.apple.com/library/ios/ipad/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/DebuggingSafarioniPhoneContent/DebuggingSafarioniPhoneContent.html

Sekarang dengan iOS 6 Anda dapat melihat konsol melalui Safari di OS X jika Anda mencolokkan perangkat Anda. Atau Anda dapat melakukannya dengan emulator, cukup buka jendela browser Safari dan buka tab "Kembangkan". Di sana Anda akan menemukan opsi untuk membuat inspektur Safari berkomunikasi dengan perangkat Anda.

Windows Phone, Android

Keduanya tidak memiliki konsol bawaan dan tidak ada kemampuan bookmarklet. Jadi kami menggunakan http://jsconsole.com/type : listen dan itu akan memberi Anda tag skrip untuk ditempatkan di HTML Anda. Sejak saat itu Anda dapat melihat konsol Anda di dalam situs web jsconsole.

iOS dan Android

Anda juga dapat menggunakan http://html.adobe.com/edge/inspect/ untuk mengakses alat pemeriksa web dan konsol di perangkat apa pun menggunakan pengaya peramban yang nyaman.


Masalah browser yang lebih lama

Versi IE yang lebih lama akan crash jika Anda menggunakan console.log dalam kode Anda dan tidak memiliki alat pengembang terbuka pada saat yang sama. Untungnya ini adalah perbaikan yang mudah. Gunakan cuplikan kode di bawah ini di bagian atas kode Anda:

 if(!window.console){ window.console = {log: function(){} }; } 

Ini memeriksa untuk melihat apakah konsol ada, dan jika tidak mengaturnya ke objek dengan fungsi kosong yang disebut log. Ini window.console dan window.console.log tidak pernah benar-benarundefined.

Bola mata baru
sumber
26
Koreksi saya jika salah, tetapi saya pikir tidak perlu Firebug di Firefox untuk melihat konsol, cukup klik Ctrl + Shift + J (Alat> Pengembang Web> Konsol Kesalahan)
Dane411
4
@ Dane411 ini benar, tetapi pembakar lebih baik dan lebih umum digunakan.
Fresheyeball
3
@Fresheyeball Seseorang harus membersihkan semua sampah, tapi saya pikir itu pada suatu saat menjadi kurang menarik untuk memanen repetisi dan benar-benar menjaga komunitas tetap bersih.
andlrc
2
Siapa pun yang menolak jawaban ini, silakan komentar. downvotes tanpa komentar tidak berguna
Fresheyeball
ada window.dump sebelum window.console.log. Ini lebih baik daripada fungsi log kosong
OCTAGRAM
100

Anda dapat melihat pesan apa pun yang masuk ke konsol jika Anda menggunakan alat seperti Firebug untuk memeriksa kode Anda. Katakanlah Anda melakukan ini:

console.log('Testing console');

Saat Anda mengakses konsol di Firebug (atau alat apa pun yang Anda putuskan untuk memeriksa kode Anda), Anda akan melihat pesan apa pun yang Anda beri tahu fungsi untuk login. Ini sangat berguna ketika Anda ingin melihat apakah suatu fungsi sedang dieksekusi, atau jika suatu variabel diteruskan / ditugaskan dengan benar. Ini sebenarnya agak berharga untuk mencari tahu apa yang salah dengan kode Anda.

Fibericon
sumber
10
Jangan lupa untuk mendefinisikannya terlebih dahulu untuk menghindari kesalahan di IE: stackoverflow.com/a/7585409/318765
mgutt
83

Ini akan memposting pesan log ke konsol javascript browser, misalnya Firebug atau Alat Pengembang (Chrome / Safari) dan akan menampilkan baris dan file dari mana ia dieksekusi.

Selain itu, ketika Anda menghasilkan objek jQuery itu akan menyertakan referensi ke elemen itu di DOM, dan mengkliknya akan pergi ke yang di tab Elemen / HTML.

Anda dapat menggunakan berbagai metode, tetapi berhati-hatilah agar itu berfungsi di Firefox, Anda harus membuka Firebug, jika tidak seluruh halaman akan macet. Apakah yang Anda masuki adalah variabel, array, objek atau elemen DOM, itu akan memberi Anda rincian lengkap termasuk prototipe untuk objek juga (selalu menarik untuk melihat-lihat). Anda juga bisa memasukkan sebanyak argumen yang Anda inginkan, dan mereka akan digantikan oleh spasi.

console.log(  myvar, "Logged!");
console.info( myvar, "Logged!");
console.warn( myvar, "Logged!");
console.debug(myvar, "Logged!");
console.error(myvar, "Logged!");

Ini muncul dengan logo berbeda untuk setiap perintah.

Anda juga dapat menggunakan console.profile(profileName);untuk mulai membuat profil suatu fungsi, skrip, dll. Dan kemudian mengakhirinya dengan console.profileEnd(profileName);dan itu akan muncul di tab Profil Anda di Chrome (tidak tahu dengan FF).

Untuk referensi lengkap, buka http://getfirebug.com/logging dan saya sarankan Anda membacanya. (Jejak, grup, profil, inspeksi objek).

Semoga ini membantu!

Fred
sumber
1
Kenapa console.log("x:", x)lebih baik dari itu console.log("x:" + x)? Apakah rawan kesalahan lebih sedikit sejak a, lebih mudah dibaca daripada a +?
Kevin Meredith
Menurut pendapat saya sedikit lebih mudah dibaca ketika Anda menghasilkan banyak hal yang berbeda. Dalam hal ini mungkin harus menggunakan +secara ketat, tetapi saya ingin menunjukkan bahwa Anda juga dapat menggunakan koma di fungsi konsol. Selain itu, ia menghindari masalah jika kedua variabel tersebut adalah bilangan bulat atau array.
Fred
5
console.log("x:", x)secara signifikan lebih baik, karena ketika xobjek atau array (atau apa pun kecuali string), itu akan ditampilkan dengan benar, tanpa konversi ke string.
Josef Kufner
34

Tidak ada hubungannya dengan jQuery dan jika Anda ingin menggunakannya saya menyarankan Anda untuk melakukannya

if (window.console) {
    console.log("your message")
}

Jadi Anda tidak merusak kode Anda ketika itu tidak tersedia.

Seperti yang disarankan dalam komentar, Anda juga dapat menjalankannya di satu tempat dan kemudian menggunakannya console.logseperti biasa

if (!window.console) { window.console = { log: function(){} }; }
Baptiste Pernet
sumber
18
Bolehkah saya merekomendasikan melakukan if(!window.console){ window.console = function(){}; }sebaliknya di satu tempat, lalu menggunakan console.log seperti biasa.
Fresheyeball
23

console.logtidak ada hubungannya dengan jQuery. Ini adalah objek / metode umum yang disediakan oleh debugger (termasuk debugger Chrome dan Firebug) yang memungkinkan skrip untuk mencatat data (atau objek dalam banyak kasus) ke konsol JavaScript.

Quentin
sumber
19

console.loglog informasi debug ke konsol pada beberapa browser (Firefox dengan Firebug diinstal, Chrome, IE8, apa pun dengan Firebug Lite diinstal). Di Firefox, ini adalah alat yang sangat kuat, memungkinkan Anda untuk memeriksa objek atau memeriksa tata letak atau properti elemen HTML lainnya. Ini tidak terkait dengan jQuery, tetapi ada dua hal yang biasanya dilakukan saat menggunakannya dengan jQuery:

  • instal ekstensi FireQuery untuk Firebug. Ini, di antara kelebihan lainnya, membuat pencatatan objek jQuery terlihat lebih bagus.

  • buat pembungkus yang lebih sesuai dengan konvensi kode chaining jQuery.

Ini biasanya berarti sesuatu seperti ini:

$.fn.log = function() {
    if (window.console && console.log) {
        console.log(this);
    }
    return this;
}

yang dapat Anda panggil seperti

$('foo.bar').find(':baz').log().hide();

untuk dengan mudah memeriksa rantai jQuery.

Tgr
sumber
16

console.log tidak ada hubungannya dengan jQuery.

Ini mencatat pesan ke konsol debugging, seperti Firebug.

Slaks
sumber
16

Suatu titik kebingungan kadang-kadang adalah bahwa untuk mencatat pesan teks bersama dengan isi dari salah satu objek Anda menggunakan console.log, Anda harus melewati masing-masing dari keduanya sebagai argumen yang berbeda. Ini berarti bahwa Anda harus memisahkannya dengan koma karena jika Anda menggunakan operator + untuk menggabungkan output, ini secara implisit akan memanggil .toString()metode objek Anda. Ini dalam banyak kasus tidak secara eksplisit ditimpa dan implementasi default yang diwarisi oleh Objecttidak memberikan informasi yang berguna.

Contoh untuk dicoba di konsol:

>>> var myObj = {foo: 'bar'}
undefined
>>> console.log('myObj is: ', myObj);
myObj is: Object { foo= "bar"}

sedangkan jika Anda mencoba menyatukan pesan teks informatif beserta konten objek, Anda akan mendapatkan:

>>> console.log('myObj is: ' + myObj);
myObj is: [object Object]

Jadi perlu diingat bahwa console.log sebenarnya membutuhkan argumen sebanyak yang Anda suka.

Thalis K.
sumber
13

Menggunakan console.log untuk menambahkan informasi debug ke halaman Anda.

Banyak orang menggunakan alert(hasNinjas)untuk tujuan ini tetapiconsole.log(hasNinjas) lebih mudah untuk dikerjakan. Menggunakan pop-up lansiran kotak dialog modal yang memblokir antarmuka pengguna.

Sunting: Saya setuju dengan Baptiste Pernet dan Jan Hančič bahwa itu adalah ide yang sangat bagus untuk memeriksa apakah window.consoledidefinisikan terlebih dahulu sehingga kode Anda tidak rusak jika tidak ada konsol yang tersedia.

Mark Byers
sumber
12

Contoh - misalkan Anda ingin tahu baris kode mana yang dapat menjalankan program Anda (sebelum rusak!), Cukup ketik

console.log("You made it to line 26. But then something went very, very wrong.")
Gautam Kshatriya
sumber
11

Anda menggunakannya untuk men-debug kode JavaScript dengan Firebug untuk Firefox, atau konsol JavaScript di browser WebKit .

var variable;

console.log(variable);

Ini akan menampilkan konten variabel, bahkan jika itu adalah array atau objek.

Ini mirip dengan print_r($var);untuk PHP .

jondavidjohn
sumber
3
Tip berguna ... Saya selalu menyertakan berikut dalam file javascript diakses secara global: if (!window.console) { window.console = { log : function() {} }; }. Ini memungkinkan Anda untuk pergi dengan lupa untuk menghapus pernyataan debug sesekali.
roufamatic
@roufamatic Saya tidak tahu ... menambahkan kode, untuk menangani kode yang bukan milik, sepertinya solusi yang sangat mengerikan ... terutama ketika menemukan / mengganti sangat mudah ...
jondavidjohn
10

Hati-hati: meninggalkan panggilan ke konsol dalam kode produksi Anda akan menyebabkan situs Anda rusak di Internet Explorer. Jangan pernah membuka bungkusnya. Lihat: https://web.archive.org/web/20150908041020/blog.patspam.com/2009/the-curse-of-consolelog

Harlo Holmes
sumber
2
Ini bukan berarti log konsol akan rusak jika Anda menggunakan mesin Windows, tetapi itu akan merusak situs Anda jika Anda menggunakan Internet Explorer.
Kris Hollenbeck
Saya pikir blog yang dirujuk dalam jawaban sudah tidak ada.
Tsundoku
Tautan asli sudah mati. Saya telah menemukan salinan Arsip Web.
Alex
8

Pada hari-hari awal JS debugging dilakukan melalui alert()fungsi - sekarang ini merupakan praktik yang usang.

Ini console.log()adalah fungsi yang menulis pesan untuk login pada konsol debugging, seperti Webkit atau Firebug. Di browser Anda tidak akan melihat apa pun di layar. Ini mencatat pesan ke konsol debugging. Ini hanya tersedia di Firefox dengan Firebug dan di browser berbasis Webkit (Chrome dan Safari). Itu tidak bekerja dengan baik di semua rilis IE .

Objek konsol adalah ekstensi ke DOM.

The console.log()harus digunakan dalam kode hanya selama pengembangan dan debugging.

Ini dianggap praktik buruk yang ditinggalkan seseorang console.log()di file javascript di server produksi.

jjpcondor
sumber
5

Jika browser Anda mendukung debugging, Anda dapat menggunakan metode console.log () untuk menampilkan nilai-nilai JavaScript.

Aktifkan debugging di browser Anda dengan F12 , dan pilih "Console" di menu debugger.

Konsol dalam JavaScript. Cobalah untuk memperbaiki, atau "debug," program JavaScript yang tidak berfungsi, dan berlatih menggunakan perintah console.log (). Ada beberapa pintasan yang akan membantu Anda mengakses konsol JavaScript, berdasarkan peramban yang Anda gunakan:

Pintasan Keyboard Konsol Chrome

Windows: Ctrl+ Shift+ J
Mac: Cmd+ Option+J

Pintasan Keyboard Konsol Firefox

Windows: Ctrl+ Shift+ K
Mac: Cmd+ Option+K

Pintasan Keyboard Konsol Internet Explorer

F12 kunci

Pintasan Keyboard Konsol Safari

Cmd+ Option+C

S. Mayol
sumber
4

console.logsecara khusus adalah metode untuk pengembang untuk menulis kode untuk secara tidak mencolok menginformasikan pengembang apa yang dilakukan kode. Ini dapat digunakan untuk mengingatkan Anda bahwa ada masalah, tetapi tidak boleh menggantikan debugger interaktif ketika tiba saatnya untuk men-debug kode. Sifatnya yang tidak sinkron berarti nilai yang dicatat tidak selalu mewakili nilai ketika metode dipanggil.

Singkatnya: kesalahan log dengan console.log(jika tersedia), lalu perbaiki kesalahan menggunakan debugger pilihan Anda: Firebug , Alat Pengembang WebKit (bawaan untuk Safari dan Chrome ), Alat Pengembang IE atau Visual Studio.

outis
sumber
4

Saya benar-benar merasa pemrograman web mudah ketika saya mulai console.loguntuk debugging.

var i;

Jika saya ingin memeriksa nilai iruntime ..

console.log(i);

Anda dapat memeriksa nilai saat ini idi tab konsol firebug. Ini khusus digunakan untuk debugging.

aksu
sumber
4

Ini digunakan untuk mencatat (apa pun yang Anda lewati) ke konsol Firebug . Penggunaan utama adalah untuk men-debug kode JavaScript Anda.

Poelinca Dorin
sumber
4

Terlepas dari penggunaan yang disebutkan di atas, console.logjuga dapat mencetak ke terminal di node.js. Server yang dibuat dengan express (misalnya) dapat digunakan console.loguntuk menulis ke file logger output.

surajck
sumber
2

Dalam skrip java tidak ada fungsi input dan output. Jadi untuk debug metode kode console.log () digunakan. Ini adalah metode untuk logging. Ini akan dicetak di bawah log konsol (alat pengembangan).

Ini tidak ada di IE8 dan di bawah sampai Anda membuka alat pengembangan IE.

NavyaKumar
sumber
2

Ini tidak ada hubungannya dengan jQuery. Ini console.log()merujuk ke fungsi log objek konsol, yang menyediakan metode untuk mencatat informasi ke konsol browser. Metode-metode ini dimaksudkan hanya untuk tujuan debugging dan tidak boleh diandalkan untuk menyajikan informasi kepada pengguna akhir.

Aravinda Meewalaarachchi
sumber