前几天又被坑了一次,上来念叨两句。我从一份网页文档里复制了一段示例代码,粘进编辑器,肉眼看和手敲的那行一模一样,可一跑就报某个变量 undefined。第一反应当然是变量名拼错了,对着屏幕瞪了快半小时,逐字符比对,真没看出半点差别。
后来才醒悟,复制过来的字符串里混进了零宽空格(U+200B)或者全角空格这类不可见字符。眼睛根本分辨不了,解释器却认得很清楚。最气人的是报错信息还常常牛头不对马嘴,把你往完全错误的方向引,白忙活大半天。
嗯
我现在的习惯是,凡是从外面粘进来的代码,先过一遍 hexdump,或者把编辑器的「显示空白字符」打开,让这些隐形人现形。靠瞪眼睛去 debug 隐形字符,纯属自我折磨。