[javascript] Chrome JavaScript 개발자 콘솔 : 줄 바꿈없이 console.log ()를 호출 할 수 있나요?

console.log ()를 호출 할 때마다 새 줄 추가 하지 않고 메시지를 기록하기 위해 console.log ()를 사용하고 싶습니다 . 이것이 가능한가?



답변

아니요, 불가능합니다. 모든 것을 한 줄에 넣으려면 문자열을 유지하고 연결해야합니다. 그렇지 않으면 출력을 다른 창에 넣어야합니다 (예 : 다른 창).


답변

NodeJS에서는 process.stdout.write를 사용할 수 있으며 원하는 경우 ‘\ n’을 추가 할 수 있습니다.

console.log(msg)와 동일합니다 process.stdout.write(msg + '\n').


답변

원하는만큼 많은 것을 넣을 수 있습니다 arguments.

console.log('hi','these','words','will','be','separated','by','spaces',window,document)

객체 참조가 인라인으로 된 한 줄에 모든 출력을 얻은 다음 거기에서 검사자를 드롭 다운 할 수 있습니다.


답변

예, 가능합니다 (아래 데모 확인)-네이티브 브라우저 콘솔 위에 자신 만의 가상 콘솔을 구현 한 다음 실제 콘솔과 동기화하면됩니다.

이것은 생각보다 훨씬 쉽습니다.

  1. 디스플레이 버퍼 유지 (예 : 각각 한 줄을 나타내는 문자열 배열)
  2. console.clear()이전 내용을 지우려면 쓰기 전에 호출
  3. console.log()디스플레이 버퍼의 내용으로 콘솔을 채우려면 호출 (또는 경고, 오류 등)

사실 저는이 일을 한동안 해왔습니다. 짧고 기초적인 아이디어 구현은 다음 줄을 따라가는 것이지만 여전히 콘솔 콘텐츠애니메이션 할 수 있습니다.

// =================================================
// Rudimentary implementation of a virtual console.
// =================================================

var virtualConsole = {
    lines: [],
    currentLine: 0,
    log: function (msg, appendToCurrentLine) {
        if (!appendToCurrentLine) virtualConsole.currentLine++;

        if (appendToCurrentLine && virtualConsole.lines[virtualConsole.currentLine]) {
            virtualConsole.lines[virtualConsole.currentLine] += msg;
        } else {
            virtualConsole.lines[virtualConsole.currentLine] = msg;
        }

        console.clear();

        virtualConsole.lines.forEach(function (line) {
            console.log(line);
        });
    },
    clear: function () {
        console.clear();
        virtualConsole.currentLine = 0;
    }
}

// =================================================
// Little demo to demonstrate how it looks.
// =================================================

// Write an initial console entry.
virtualConsole.log("Loading");

// Append to last line a few times.
var loadIndicatorInterval = setInterval(function () {
    virtualConsole.log(".", true); // <- Append.
}, 500);

// Write a new line.
setTimeout(function () {
    clearInterval(loadIndicatorInterval);
    virtualConsole.log("Finished."); // <- New line.
}, 8000);

직접적인 콘솔 상호 작용과 믹싱 할 때 확실히 단점이 있고, 확실히 못 생기게 보일 수 있습니다.하지만 확실히 유효한 용도가 있습니다.


답변

짧은 대답은 아니오입니다.

그러나

유스 케이스가 콘솔 부풀림을 피하면서 영구적으로 변경되는 데이터를 기록하려는 경우이를 달성하는 한 가지 방법 (특정 브라우저에서)은 console.clear()각 출력 전에 사용하는 것 입니다.

function writeSingleLine (msg) {

  console.clear();
  console.log(msg);

}

writeSingleLine('this');
setTimeout( function () { writeSingleLine('is'); }, 1000);
setTimeout( function () { writeSingleLine('a'); }, 2000);
setTimeout( function () { writeSingleLine('hack'); }, 3000);

이로 인해 애플리케이션 내에서 발생하는 다른 로깅 기능이 손상 될 수 있습니다.

면책 조항 : 나는 이것을 해킹으로 분류 할 것입니다.


답변

여러 줄에서 인쇄를 중지하는 유일한 목적은 전체 콘솔을 채우지 않으려면 값을 그룹화하는 것입니다.

추신 :- 출력을 위해 브라우저 콘솔을 참조하십시오

let arr = new Array(10).fill(0)


console.groupCollapsed('index')

arr.forEach((val,index) => {
  console.log(index)
})

console.groupEnd()

console.group

console.groupCollapsed


답변

@shennan 아이디어에 대한 것 :