📚
空文字なのにfalse判定してくれない原因
zennのリアルタイムマークダンプレビュースクリプトを書いている時に、つまずいた箇所があったので解決策のメモを残します。
空文字なのにtrue
入力エディタに入力されている文字を取得するため下記のコードを実行してみます。
document.querySelector(".CodeMirror-code").outerText
ちゃんと取得できてます。
次に下記のような単純なif文を実行してみました。
空文字(””)はfalse
と判定されることを利用しています。
if (document.querySelector(".CodeMirror-code").outerText) {
console.log("true")
} else {
console.log(false)
}
しかし、予想に反して文字が入力されていてもいなくてもtrue
判定されてしまいました。
目に見えない文字
この謎を解明すべく、試しに文字列のUnicodeコードポイントを返すcodePointAt()
メソッドを実行してみました。
何も入力されていない空文字のはずなのに、8203
という値が返ってきています。
このUnicodeの8203という値は「ゼロ幅スペース」という「非表示文字」に属する文字とのことでした。[1]
これで謎は解決です。
Discussion