首页 > 解决方案 > 多个 \t 转义序列看起来与单个 \t 有何不同?

问题描述

在我的环境中console.log("abcd\tefgh")输出“abcd efgh”,注意我看到的单个空格。

使用两个 ( \t)console.log("abcd\t\tefgh")时,此输出带有两个选项卡。

为什么会这样?

标签: javascript

解决方案


听起来您对选项卡的实际含义有一个普遍的误解

这不完全是你的错:一些纯文本编辑器(尤其是用于编程的编辑器)实际上并没有“正确”实现选项卡,许多 IDE 甚至默认重新映射键盘Tab ↹</kbd> key to some number of normal spaces (ugh); but, if you spend any length of time with a word processor (or Notepad++!) then you'll soon get used to the real deal.

标签不是“插入到文本中的一些固定数量的空间”:

abcd      fegh
    <---->
      tab

abcd            fegh
    <----><---->
      tab

  ^^^ complete lies

它是“将后续文本排到下一个制表位”:

|     |     |     |     |    (tab stops as configured in the current text view)

abcd  fegh
    <>
   tab

abcd        fegh
    <><---->
   tab  tab

  ^^^ sheer genius truth

因此,如果下一个制表位不远,您将不会从第一个制表位获得太多(如果有的话!)增加空间......但是您的第二个制表位必须转到下一个制表位,这在所有情况下都可能沿线至少有一段距离:

|    |    |    |    |

abcd fegh
    ≷
   tab

abcd      fegh
    ≷&lt;--->
   tab tab

如果它有助于您记住,“tab”是“tabulation”的缩写,就像在tables中一样。这就是穴居人时代人们在列中排列文本的方式。

或者,仔细查看键盘上的键。是吗→</kbd>? No, it's ⇥</kbd>. It's movement towards a fixed, columnal point.


tl;博士:一切都很好。这就是标签的工作方式。


推荐阅读