<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                這個做法適合大部分具有輸出型(打印到終端)的語言函數,比如 JavaScript 的 `console 類`,Python 的`print()`等。因這個功能只能預先在代碼片段中制作好模板,然后以代碼片段的方式插入到代碼中,下文中的 `$TM*`開頭的所謂的變量都只是VSCODE用于用戶代碼片段的變量,僅在代碼片段中生效,切勿將這些變量直接寫入代碼中,離開了VScode 編輯器它是不生效的。 1. 基本的格式: **[文件名稱] + [行:列] + [要輸出、打印的變量或者其他內容] =>** > 這樣在測試具有調用關系(文件多)且存在多個變量打印輸出的程序時,便能從終端中清晰地看到輸出結果來自具體的文件及變量或者表達式。 2. 把它做成代碼片段,當需要用的時候可以插入到代碼中。 在調試檢查JavaScript 代碼的時候,你是使用 debug 工具多一些還是直接插入 console.log() 多一些? 反正我自己是用 console.log() 多一些。當插入的 console 函數多了,就會發生一件可怕的事情:完全不知道哪是哪了。尤其像那種懶得加備注的人只輸出變量或者函數執行結果,不會花半點時間加上變量名或者函數名。你能想象吧:輸出一大堆結果,可不一定知道結果來自哪個變量或者函數。</br> 某天,我以外發現VS CODE 支持文件地址及文件內容內部行列組成的地址,在狀態欄或者終端中可以直接點擊(Ctrl+鼠標左鍵)鏈接準確直達出問題的地方。因此,后知后覺決定給console.log()等常用的輸出加點東西:`文件路徑+[行號]:[列號]` 即便不加上備注(變量名、函數名等)也能通過行列地址很快找到出處。 ## JavaScript 代碼片段 (VS code 的代碼片段大都是JSON格式) ```json "console.log-Addr":{ "prefix": ["cl","console"], "body": "console.log(` \\${__filename}:$TM_LINE_NUMBER:$TM_LINE_INDEX --> \\${$1}`)", "description": "不會DeBUG只會 console.log() 就乖乖加行號!!!" } // 這里為什么用 __filename(node.js 的全局變量,僅 node.js 運行環境支持), 因為用 $TM_FILEPATH 得到的路徑含有“\”,大家都知道“\”符號在代碼內會發生什么! // 在執行之后就不是路徑了。至少我發現在Windows 下存在這個問題。 // 當然,你可以用$TM_FILENAME(不足的地方在于:但有多個相同的文件名時會不好分辨) ``` > 我只在 console.log() 上加,你可以給 console.err()\console.warn()等函數加上。 > >這東西(源代碼行列地址)其實很實用,仔細看你會發現,像 throw 這類關鍵字在觸發時可能會在狀態欄顯示出錯位置(具體文件以及所在行列),但console.log()這類是不會顯示其源碼所在位置的。 一些特別需要強調的說明,就可以通過這方式輸出給用戶或者協作人知曉。也方便他們在最短時間內定位源代碼。 不出意外你會在JS程序執行之后在終端或者瀏覽器控制臺看到它們,比如類似這樣的信息:` index.js:50:60 --> xxx` (意思是:"xxx" 來自 index.js 的第50行第60列) 你可以按自己注釋習慣來靈活使用文件內行列地址。 > **注意** > >*這不是一勞永逸的做法,因為當源碼被新增行,原有的位置就會下移,但是已有的行列號不變,最終的結果就是源碼地位不準確,這是沒有辦法的事情,畢竟它是字符形式添加進入文件的和注釋差不多,它不是運行時生成故不能自動變化。當位置發生變化時,有必要的話你應該更改先前的行列地址。以保證指向準確。* ## 優化下: ``` "log-with_address":{ "prefix": ["cl","console"], "body": "console.log(` \\${__filename}:$TM_LINE_NUMBER:$TM_LINE_INDEX ` + '${any}-->' + ${any})", "description": "log address" }, // ${any} 的用途: 兩個相同的 ${any} 可以實現在不同的地方輸入相同的內容。不一定是${any},可以是 ${1} "log-with_address":{ "prefix": ["cl","console"], "body": "console.log(` \\${__filename}:$TM_LINE_NUMBER:$TM_LINE_INDEX ` + '${1}-->' + ${1})", "description": "log address" } // 說到底只是增加了輸出的內容 // 把 console.log(foo) 變成了類似 // console.log("這是變量 foo 輸出的結果=>" + foo) 而已 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看