ฉันจะพิมพ์ข้อความไปยังคอนโซลข้อผิดพลาดโดยเฉพาะอย่างยิ่งรวมถึงตัวแปรได้อย่างไร
ตัวอย่างเช่น:
print('x=%d', x);
ฉันจะพิมพ์ข้อความไปยังคอนโซลข้อผิดพลาดโดยเฉพาะอย่างยิ่งรวมถึงตัวแปรได้อย่างไร
ตัวอย่างเช่น:
print('x=%d', x);
คำตอบ:
ติดตั้งFirebugจากนั้นคุณสามารถใช้console.log(...)
และconsole.debug(...)
อื่น ๆ (ดูเอกสารประกอบเพิ่มเติม)
console.log()
ควรทำงานในเบราว์เซอร์ทั้งหมดรวมถึง IE อย่างไรก็ตามในทุกกรณีคุณจำเป็นต้องเปิดหน้าต่างดีบักเกอร์ในเวลานั้นมิฉะนั้นการเรียกเพื่อconsole
จะสร้างข้อผิดพลาด
console.error(message); //gives you the red errormessage
console.log(message); //gives the default message
console.warn(message); //gives the warn message with the exclamation mark in front of it
console.info(message); //gives an info message with an 'i' in front of the message
คุณยังสามารถเพิ่ม CSS ในข้อความบันทึกของคุณ:
console.log('%c My message here', "background: blue; color: white; padding-left:10px;");
console.log
คุณสามารถใช้ CSS ภายในคอนโซล: |
ข้อยกเว้นเข้าสู่คอนโซล JavaScript คุณสามารถใช้สิ่งนั้นได้หากคุณต้องการปิดการใช้งานFirebug
function log(msg) {
setTimeout(function() {
throw new Error(msg);
}, 0);
}
การใช้งาน:
log('Hello World');
log('another message');
throw
ต้องห่อด้วยsetTimeout
?
วิธีที่ดีวิธีหนึ่งในการทำงานข้ามเบราว์เซอร์นั้นได้อธิบายไว้ในDebugging JavaScript: ทิ้งการแจ้งเตือนของคุณ! .
throw()
ไม่ใช่วิธีการทำเช่นนี้อย่างแน่นอน คุณจะมีปัญหาไม่ช้าก็เร็ว สำหรับฉันมันไม่ช้าก็เร็ว :(
ต่อไปนี้เป็นวิธีแก้ปัญหาสำหรับตัวอักษรเกี่ยวกับวิธีพิมพ์ข้อความไปยังคอนโซลข้อผิดพลาดของเบราว์เซอร์ไม่ใช่คอนโซลดีบักเกอร์ (อาจมีเหตุผลที่ดีที่จะเลี่ยงผ่านตัวดีบัก)
ดังที่ฉันได้กล่าวไว้ในความคิดเห็นเกี่ยวกับข้อเสนอแนะในการโยนข้อผิดพลาดเพื่อให้ได้รับข้อความในคอนโซลข้อผิดพลาดปัญหาอย่างหนึ่งคือการที่จะขัดจังหวะการทำงานของเธรด หากคุณไม่ต้องการขัดจังหวะเธรดคุณสามารถโยนข้อผิดพลาดในเธรดแยกต่างหากเธรดที่สร้างขึ้นโดยใช้ setTimeout ดังนั้นทางออกของฉัน (ซึ่งกลายเป็นความละเอียดของหนึ่งโดย Ivo Danihelka):
var startTime = (new Date()).getTime();
function logError(msg)
{
var milliseconds = (new Date()).getTime() - startTime;
window.setTimeout(function () {
throw( new Error(milliseconds + ': ' + msg, "") );
});
}
logError('testing');
ฉันรวมเวลาเป็นมิลลิวินาทีนับตั้งแต่เวลาเริ่มต้นเนื่องจากการหมดเวลาอาจบิดเบือนคำสั่งที่คุณคาดว่าจะเห็นข้อความ
อาร์กิวเมนต์ที่สองของเมธอด Error เป็นชื่อไฟล์ซึ่งเป็นสตริงว่างที่นี่เพื่อป้องกันเอาต์พุตของชื่อไฟล์และหมายเลขบรรทัดที่ไม่มีประโยชน์ มันเป็นไปได้ที่จะได้รับฟังก์ชั่นการโทร แต่ไม่ได้อยู่ในเบราว์เซอร์ที่เรียบง่ายอย่างอิสระ
มันจะดีถ้าเราสามารถแสดงข้อความที่มีคำเตือนหรือไอคอนข้อความแทนไอคอนข้อผิดพลาด แต่ฉันไม่สามารถหาวิธีที่จะทำ
ปัญหาอีกประการหนึ่งของการใช้การขว้างก็คือมันอาจถูกจับและถูกโยนทิ้งโดยการลองจับและการโยนในการแยกด้ายเพื่อหลีกเลี่ยงอุปสรรคนั้นเช่นกัน อย่างไรก็ตามยังมีอีกวิธีหนึ่งที่ข้อผิดพลาดอาจถูกจับได้ซึ่งก็คือถ้าตัวจัดการหน้าต่าง window.error ถูกแทนที่ด้วยอันที่ทำสิ่งที่แตกต่าง ไม่สามารถช่วยคุณได้
ในการตอบคำถาม:
console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);
แทนที่จะมีข้อผิดพลาดคุณสามารถใช้ข้อมูลบันทึกหรือเตือน
console.error(..)
เป็นคุณสมบัติที่ไม่ได้มาตรฐานและไม่ควรใช้ในการผลิต คุณใช้อะไรกับเรื่องนี้? คุณมีข้อเสนอแนะใด ๆ สำหรับโปรแกรมเมอร์มือใหม่ที่ใช้console.error
vs console.log
?
console.log(...)
"ไม่ได้มาตรฐาน" เช่นกัน ในเรื่องที่เป็นมีเสถียรภาพconsole.error
console.log
หากคุณใช้Firebugและต้องการการสนับสนุน IE, Safari หรือ Opera เช่นกันFirebug Liteจะเพิ่มการสนับสนุน console.log () ให้กับเบราว์เซอร์เหล่านี้
WebKit Web ตรวจสอบนอกจากนี้ยังสนับสนุนFirebug ของคอนโซล API (เพียงเล็กน้อยนอกจากนี้เพื่อตอบแดน )
หมายเหตุเกี่ยวกับ 'Throw ()' ที่กล่าวถึงข้างต้น ดูเหมือนว่าจะหยุดการทำงานของหน้าเว็บอย่างสมบูรณ์ (ฉันตรวจสอบใน IE8) ดังนั้นจึงไม่มีประโยชน์มากสำหรับการบันทึก "ในกระบวนการที่กำลังดำเนินการ" (เช่นการติดตามตัวแปรบางอย่าง ... )
คำแนะนำของฉันอาจจะเพิ่มองค์ประกอบtextareaบางแห่งในเอกสารของคุณและเปลี่ยน (หรือผนวกกับ) ค่าของมัน(ซึ่งจะเปลี่ยนข้อความ) สำหรับการบันทึกข้อมูลทุกครั้งที่ต้องการ ...
console.log()
และthrow()
อื่น ๆ นอกจากนี้ไม่มีอะไรผิดปกติกับพฤติกรรมของthrow()
ตามที่คุณดูเหมือนจะบอกเป็นนัย - ความจริงที่ว่ามันหยุดการดำเนินการเป็นเจตนาและเอกสาร ( นักพัฒนา mozilla.org/en-US/docs/Web/JavaScript/Reference/ ...... ) และสอดคล้องกับวิธีการโยน / จับข้อยกเว้นในภาษาการเขียนโปรแกรมอื่น ๆ (ถ้าคุณต้องการบันทึกเนื้อหาของตัวแปรโดยไม่หยุดการทำงานนั่นเป็นสิ่งที่console.log()
จำเป็น)
console.log
ดังนั้นผู้คนจึงให้ทางเลือกอื่น เกี่ยวกับthrow()
การหยุดการทำงานแน่นอนว่ามันเป็นเรื่องที่ตั้งใจไม่มีใครพูดว่าไม่ใช่ นั่นเป็นเหตุผลที่ปกติแล้วมันไม่ใช่วิธีที่ดีในการบันทึกข้อมูลการดีบักในรันไทม์ซึ่งสิ่งที่ OP ต้องการ ...
และเช่นเคย Internet Explorer เป็นช้างขนาดใหญ่ใน rollerskates console.log()
ที่จะหยุดคุณก็เพียงแค่ใช้
บันทึกของ jQueryสามารถปรับเปลี่ยนได้อย่างง่ายดาย แต่เป็นความเจ็บปวดเมื่อต้องเพิ่มทุกที่ ทางออกหนึ่งถ้าคุณใช้ jQuery ก็คือใส่ลงในไฟล์ jQuery ของคุณท้ายที่สุดย่อขนาดก่อน:
function log()
{
if (arguments.length > 0)
{
// Join for graceful degregation
var args = (arguments.length > 1) ? Array.prototype.join.call(arguments, " ") : arguments[0];
// This is the standard; Firebug and newer WebKit browsers support this.
try {
console.log(args);
return true;
} catch(e) {
// Newer Opera browsers support posting erros to their consoles.
try {
opera.postError(args);
return true;
}
catch(e)
{
}
}
// Catch all; a good old alert box.
alert(args);
return false;
}
}
เยี่ยมชมhttps://developer.chrome.com/devtools/docs/console-apiสำหรับการอ้างอิงคอนโซลอย่างสมบูรณ์
console.error(object[Obj,....])\
ในกรณีนี้วัตถุจะเป็นสตริงข้อผิดพลาดของคุณ
function foo() {
function bar() {
console.trace("Tracing is Done here");
}
bar();
}
foo();
console.log(console); //to print console object
console.clear('console.clear'); //to clear console
console.log('console.log'); //to print log message
console.info('console.info'); //to print log message
console.debug('console.debug'); //to debug message
console.warn('console.warn'); //to print Warning
console.error('console.error'); //to print Error
console.table(["car", "fruits", "color"]);//to print data in table structure
console.assert('console.assert'); //to print Error
console.dir({"name":"test"});//to print object
console.dirxml({"name":"test"});//to print object as xml formate
To Print Error:- console.error('x=%d', x);
console.log("This is the outer level");
console.group();
console.log("Level 2");
console.group();
console.log("Level 3");
console.warn("More of level 3");
console.groupEnd();
console.log("Back to level 2");
console.groupEnd();
console.log("Back to the outer level");
console.log("your message here");
ทำงานกับฉัน .. ฉันกำลังค้นหาสิ่งนี้ .. ฉันใช้ Firefox นี่คือสคริปต์ของฉัน
$('document').ready(function() {
console.log('all images are loaded');
});
ทำงานใน Firefox และ Chrome
วิธีที่ง่ายที่สุดในการทำเช่นนี้คือ:
console.warn("Text to print on console");
เพื่อตอบคำถามของคุณคุณสามารถใช้คุณสมบัติ ES6 ได้
var var=10;
console.log(`var=${var}`);
สิ่งนี้ไม่ได้พิมพ์ไปยังคอนโซล แต่จะเปิดป๊อปอัพการแจ้งเตือนพร้อมข้อความซึ่งอาจมีประโยชน์สำหรับการแก้ไขข้อบกพร่องบางอย่าง:
แค่ทำ:
alert("message");
ด้วยไวยากรณ์ es6 คุณสามารถใช้:
console.log(`x = ${x}`);