1. 程式人生 > >js 系統教程-15-js 語法之命令列-console.log,console.info,console.error,console.warn,debugger

js 系統教程-15-js 語法之命令列-console.log,console.info,console.error,console.warn,debugger

目錄

console 物件與控制檯

console

console物件是 JavaScript 的原生物件,它有點像 Unix 系統的標準輸出stdout和標準錯誤stderr,可以輸出各種資訊到控制檯,並且還提供了很多有用的輔助方法。

  • console的常見用途有兩個。

    1. 除錯程式,顯示網頁程式碼執行時的錯誤資訊。

    2. 提供了一個命令列介面,用來與網頁程式碼互動。

console 物件的靜態方法

console物件提供的各種靜態方法,用來與控制檯視窗互動。

console.log(),console.info(),console.debug()

console.log()

用於在控制檯輸出資訊。它可以接受一個或多個引數,將它們連線起來輸出。

console.log('Hello World')
// Hello World
console.log('a', 'b', 'c')
// a b c

console.log() 會自動在每次輸出的結尾,新增換行符。

console.log(1);
console.log(2);
console.log(3);
// 1
// 2
// 3

格式佔位符

如果第一個引數是格式字串(使用了格式佔位符),console.log方法將依次用後面的引數替換佔位符,然後再進行輸出。

console.log(' %s + %s = %s'
, 1, 1, 2) // 1 + 1 = 2

console.log() 支援以下佔位符,不同型別的資料必須使用對應的佔位符。

  • %s 字串

  • %d 整數

  • %i 整數

  • %f 浮點數

  • %o 物件的連結

  • %c CSS 格式字串

var number = 11 * 9;
var color = 'red';

console.log('%d %s balloons', number, color);
// 99 red balloons
  • css 樣式
console.log(
  '%cThis text is styled!',
  'color: red; background: yellow; font-size: 24px;'
)

上面程式碼執行後,輸出的內容將顯示為黃底紅字。

console.info 是 console.log() 的別名,用法完全一樣。只不過console.info() 會在輸出資訊的前面,加上一個藍色圖示。

console.debug 方法與 console.log() 類似,會在控制檯輸出除錯資訊。

但是,預設情況下,console.debug 輸出的資訊不會顯示,只有在開啟顯示級別在 verbose 的情況下,才會顯示。

  • 方法的覆蓋
['log', 'info', 'warn', 'error'].forEach(function(method) {
  console[method] = console[method].bind(
    console,
    new Date().toISOString()
  );
});

console.log("出錯了!");
// 2014-05-18T09:00.000Z 出錯了!

console.warn(),console.error()

warn方法和error方法也是在控制檯輸出資訊,它們與log方法的不同之處在於,

warn方法輸出資訊時,在最前面加一個黃色三角,表示警告;

error方法輸出資訊時,在最前面加一個紅色的叉,表示出錯。

同時,還會高亮顯示輸出文字和錯誤發生的堆疊。其他方面都一樣。

console.error('Error: %s (%i)', 'Server is not responding', 500)
// Error: Server is not responding (500)
console.warn('Warning! Too few nodes (%d)', document.childNodes.length)
// Warning! Too few nodes (1)

console.table()

var languages = [
  { name: "JavaScript", fileExtension: ".js" },
  { name: "TypeScript", fileExtension: ".ts" },
  { name: "CoffeeScript", fileExtension: ".coffee" }
];

console.table(languages);

console.count()

count方法用於計數,輸出它被呼叫了多少次。

function greet(user) {
  console.count();
  return 'hi ' + user;
}

greet('bob')
//  : 1
// "hi bob"

greet('alice')
//  : 2
// "hi alice"

greet('bob')
//  : 3
// "hi bob"

console.dir(),console.dirxml()

dir 方法用來對一個物件進行檢查(inspect),並以易於閱讀和列印的格式顯示。

console.log({f1: 'foo', f2: 'bar'})
// Object {f1: "foo", f2: "bar"}

console.dir({f1: 'foo', f2: 'bar'})
// Object
//   f1: "foo"
//   f2: "bar"
//   __proto__: Object

上面程式碼顯示dir方法的輸出結果,比log方法更易讀,資訊也更豐富。

console.assert()

console.assert() 方法主要用於程式執行過程中,進行條件判斷,如果不滿足條件,就顯示一個錯誤,但不會中斷程式執行。

這樣就相當於提示使用者,內部狀態不正確。

它接受兩個引數,第一個引數是表示式,第二個引數是字串。只有當第一個引數為false,才會提示有錯誤,在控制檯輸出第二個引數,否則不會有任何結果。

console.assert(false, '判斷條件不成立')
// Assertion failed: 判斷條件不成立

// 相當於
try {
  if (false) {
    throw new Error('判斷條件不成立');
  }
} catch(e) {
  console.error(e);
}

console.time(),console.timeEnd()

這兩個方法用於計時,可以算出一個操作所花費的準確時間。

console.time('Array initialize');

var array= new Array(1000000);
for (var i = array.length - 1; i >= 0; i--) {
  array[i] = new Object();
};

console.timeEnd('Array initialize');
// Array initialize: 1914.481ms

time方法表示計時開始,timeEnd方法表示計時結束。它們的引數是計時器的名稱。呼叫timeEnd方法之後,控制檯會顯示“計時器名稱: 所耗費的時間”。

console.group(),console.groupEnd(),console.groupCollapsed()

console.group和console.groupEnd這兩個方法用於將顯示的資訊分組。它只在輸出大量資訊時有用,分在一組的資訊,可以用滑鼠摺疊/展開。

console.group('一級分組');
console.log('一級分組的內容');

console.group('二級分組');
console.log('二級分組的內容');

console.groupEnd(); // 一級分組結束
console.groupEnd(); // 二級分組結束

console.groupCollapsed()console.group() 很類似,唯一的區別是該組的內容,在第一次顯示時是收起的(collapsed),而不是展開的。

console.trace(),console.clear()

console.trace() 顯示當前執行的程式碼在堆疊中的呼叫路徑。

console.trace()
// console.trace()
//   (anonymous function)
//   InjectedScript._evaluateOn
//   InjectedScript._evaluateAndWrap
//   InjectedScript.evaluate

debugger 語句

debugger語句主要用於除錯,作用是設定斷點。

如果有正在執行的除錯工具,程式執行到debugger語句時會自動停下。如果沒有除錯工具,debugger語句不會產生任何結果,JavaScript 引擎自動跳過這一句。

Chrome 瀏覽器中,當代碼執行到debugger語句時,就會暫停執行,自動開啟指令碼原始碼介面。

for(var i = 0; i < 5; i++){
  console.log(i);
  if (i === 2) debugger;
}

上面程式碼打印出0,1,2以後,就會暫停,自動開啟原始碼介面,等待進一步處理。

控制檯命令列 API

瀏覽器控制檯中,除了使用console物件,還可以使用一些控制檯自帶的命令列方法。

$_

$_ 屬性返回上一個表示式的值。

2 + 2
// 4
$_
// 4

$0 - $4

控制檯儲存了最近5個在 Elements 面板選中的 DOM 元素,$0 代表倒數第一個(最近一個),$1 代表倒數第二個,以此類推直到$4。

$(selector)

$(selector) 返回第一個匹配的元素,等同於 document.querySelector()

注意,如果頁面指令碼對 $ 有定義,則會覆蓋原始的定義。

比如,頁面裡面有 jQuery,控制檯執行 $(selector) 就會採用 jQuery 的實現,返回一個數組。

$$(selector)

$$(selector) 返回選中的 DOM 物件,等同於 document.querySelectorAll()

$x(path)

$x(path) 方法返回一個數組,包含匹配特定 XPath 表示式的所有 DOM 元素。

$x("//p[a]")

上面程式碼返回所有包含 a 元素的 p 元素。

inspect(object)

inspect(object) 開啟相關面板,並選中相應的元素,顯示它的細節。

DOM 元素在Elements面板中顯示,比如inspect(document)會在 Elements 面板顯示document元素。

JavaScript 物件在控制檯面板Profiles面板中顯示,比如inspect(window)。

keys(object),values(object)

keys(object) 方法返回一個數組,包含 object 的所有鍵名。

values(object) 方法返回一個數組,包含 object 的所有鍵值。

var o = {'p1': 'a', 'p2': 'b'};

keys(o)
// ["p1", "p2"]
values(o)
// ["a", "b"]

monitorEvents(object[, events]) ,unmonitorEvents(object[, events])

monitorEvents(object[, events]) 方法監聽特定物件上發生的特定事件。

事件發生時,會返回一個Event物件,包含該事件的相關資訊。unmonitorEvents() 用於停止監聽。

monitorEvents(window, "resize");
monitorEvents(window, ["resize", "scroll"])

其他

命令列 API 還提供以下方法。

  • clear():清除控制檯的歷史。

  • copy(object):複製特定 DOM 元素到剪貼簿。

  • dir(object):顯示特定物件的所有屬性,是console.dir方法的別名。

  • dirxml(object):顯示特定物件的 XML 形式,是console.dirxml方法的別名。

原文地址

原文地址

目錄導航

目錄導航

相關推薦

js 系統教程-15-js 語法命令-console.log,console.info,console.error,console.warn,debugger

目錄 console 物件與控制檯 console console物件是 JavaScript 的原生物件,它有點像 Unix 系統的標準輸出stdout和標準錯誤stderr,可以輸出各種資訊到控制檯,並且還提供了很多有用的輔助方法。

js 系統教程-17-js 語法異常處理-error,自定義異常,try catch finally

目錄 錯誤處理機制 Error 例項物件 JavaScript 解析或執行時,一旦發生錯誤,引擎就會丟擲一個錯誤物件。JavaScript 原生提供Error建構函式,所有丟擲的錯誤都是這個建構函式的例項。 var err = new

2018年JavascriptNode.JS經典教程 Node.js從理論到實戰視訊

適用人群 前端開發,前端工作,前端學習 課程概述 智慧社:Javascript之Node.JS-經典教程:從理論到實戰! 基礎部分(第1-6節) 模組化(第7-8節) 框架應用(第9-24節) 資料庫應用

JS 入門教程-09-js 比較運算子,邏輯運算子,條件運算子(三目運算子)

目錄 目錄 比較運算子 邏輯運算子 條件運算子 語法 例子 目錄導航 比較運算子 主要用於條件判斷中,以測定變數或值是否相等,下一章會講解使用。 比較運算子和數學比較相似,理解起來也比較簡單。 假設: x = 5; //數字

Node.js躬行記(3)——命令工具

一、自定義   建立一個空目錄,然後通過npm init命令初始化package.json檔案,並按提示輸入相關資訊或直接回車使用預設資訊,生成的內容如下所示。 { "name": "pwct", "version": "1.0.0", "description": "命令列工具測試", "

Python 基礎學習命令模式與互動模式的區別

命令列模式:即在win10搜尋框中,直接跳出來的頁面。在此模式下,可以通過執行程式碼"python .py"執行.py檔案。需要注意的是,在此模式下,如果要執行的程式碼檔案不在當前目錄,需要使用cd進行切換,假設我的py檔案在E:\python\demo,那麼需要執行的程式碼指令是“cd /

樹莓派Raspberry Pi實戰命令下實現USB儲存裝置自動掛載

簡單介紹實現命令列下USB儲存裝置自動掛載的方法,Linux gnome/kde視窗環境下有移動儲存的管理程式,可以實現自動掛載移動儲存裝置,但是在命令列下 通常需要用mount命令手動掛載USB儲存裝置。   通過給linux下的裝置管理服務udev新增規則配置檔案,可以實現命令列下U

Linux命令使用命令輸入與輸出

          與DOS類似,Shell 程式通常自動開啟3個標準文件:標準輸入文件(stdin)、標準輸出文件(stdout)和標準錯誤輸出文件(stderr)。其中 stdin 一般對應終端鍵盤,stdout 和 stderr 對應終端螢

Linux命令使用命令基本用法

一、編輯修改命令列         命令列實際上是一個可編輯的文字緩衝區,在按回車鍵前,可以對輸入的內容進行編輯,如刪除字元、刪除整行、插入字元。這樣使用者在輸入命令的過程中出現錯誤,無需重新輸入整個命令,只需利用編輯操作,即可改正錯誤。在命令列輸入過

程式設計小知識命令解析

當前的軟體開發中,圖形介面已然大行其道,命令列似乎愈加式微,不過在一些場景下,命令列仍然必不可少~ 工具鏈的正常運作往往需要仰仗命令列,各個工具間的“溝通交流”基本都是通過命令列來完成,考慮一下 C 語言中 main 函式的標準定義: // C int main(i

dvwa命令注入

  在只需要資料的地方惡意插入了命令,而系統沒有過濾時會造成命令列注入。dvwa提供了練習的地方   正常情況下這是用來測試網址能否連線    1.Security:Low   一旦我們插入惡意命令127.0.0.1&&net user就能發現命令被成功執行了  

nginx教程第二篇:nginx命令控制

在Linux中, 需要使用命令列來控制Nginx伺服器的啟動與停止、 過載配置檔案、 回滾日 志文件、 平滑升級等行為。 預設情況下, Nginx被安裝在目錄/usr/local/nginx/中, 其二進位制文 件路徑為/usr/local/nginc/sbin

MongoDB——命令操作

MongoDB shell 不僅僅是一個互動式的 shell,它也支援執行指定 javascript 檔案,也支援執行指定的命令片斷。有了這個特性,就可以將 MongoDB 與 linux shell 完美結合,完成大部分的日常管理和維護工作。1、通過 eval 引數執行指定

GoLang命令使用方法——flag package

2013-12-08 wcdj go語言通過使用標準庫裡的flag包來處理命令列引數。 Package flag implements command-line flag parsing. 幾點注意事項: 1,通過flag.String(), Bool(), Int

Ruby學習命令選項&環境變數

這個ruby檔案一般呢都是通過命令列來執行的,語法格式如下: ruby [ options ] [.] [ programfile ] [ arguments ... ] 直譯器可以通過下列選項被呼叫,來控制直譯器的環境和行為,來看下具體資料: 選項

CCF命令選項(java)

試題編號: 201403-3 試題名稱: 命令列選項 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述   請你寫一個命令列分析程式,用以分析給定的命令列裡包含哪些選項。每個命令列由若干個字串組成,它們之間恰好由一個空格分隔。這些

Go語言學習筆記(十七)命令引數

24.1命令列引數 os.Args命令列引數的切片 1: func main() { 2: name := "Alice" 3: fmt.Println("Good Morning", name) 4: // 說明使用者傳入了引數 5: if len(os.Args) >

CentOS 7 下網路管理命令工具nmcli

在CentOS7中預設使用NetworkManager守護程序來監控和管理網路設定。nmcli是命令列的NetworkManager工具,會自動把配置寫到/etc/sysconfig/network-scripts/目錄下面。NetworkManager最初由 Redhat 公司開發,現在由 GNOME 管理

Zookeeper筆記命令操作

$ZOOKEEPER_HOME/bin下的zkCli.sh進入命令列介面,使用help可檢視支援的所有命令:   一、節點相關操作 create [-s] [-e] path data acl create用於建立新的節點: create [-s] [-e] path data acl

linux下統計文字行數的各種方法命令統計

檔案test1.txt有17行 方法一: awk ‘{print NR}’ test1.txt | tail -n1 管道前列印所有行號,管道後則列印最後一行 或者: awk ‘END{print NR}’ test1.txt 方法二: grep -n ‘’ te