Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 非空字符串.charAt(0)如何返回空字符串?_Javascript_String_Charat - Fatal编程技术网

Javascript 非空字符串.charAt(0)如何返回空字符串?

Javascript 非空字符串.charAt(0)如何返回空字符串?,javascript,string,charat,Javascript,String,Charat,我真的被这件事弄糊涂了。。。难以置信的是,我发布了Chrome调试器的屏幕截图: 我在一个测试中快速编写了这个函数,以比较2个base64编码字符串(a可能比b短)。 但是,它总是返回0,好像第一个字符不同。 事实上,它们是:字符串a的第一个字符ca是正确的,但是由于某种神秘的原因,字符串b的第一个cb是空的!!!字符串b看起来正确,长度正确(685个字符),类型正确typeof(b)==“string” 调用代码(实际上是TypeScript)如下所示,以防有帮助: requestGET('

我真的被这件事弄糊涂了。。。难以置信的是,我发布了Chrome调试器的屏幕截图:

我在一个测试中快速编写了这个函数,以比较2个base64编码字符串(
a
可能比
b
短)。 但是,它总是返回0,好像第一个字符不同。 事实上,它们是:字符串
a
的第一个字符
ca
是正确的,但是由于某种神秘的原因,字符串
b
的第一个
cb
是空的!!!字符串
b
看起来正确,长度正确(685个字符),类型正确
typeof(b)==“string”

调用代码(实际上是TypeScript)如下所示,以防有帮助:

requestGET('qBandConfig.sql', { jobid: this.job.jobid }) // get the blob from db 
    .then(json => {
      const base64:string = json[0]['bandconfig'] // type enforced to make sure
      this.editor.setBands(base64)
        .then(() => {
          // test that we find the same blob when re-encoding
          const check:string = this.editor.getBandsBLOB()
          const diff = firstDiff(check, base64) // always return 0 ????
          if (diff > -1 && check[diff] !== '=')
            this.log.warning('encoded blob ', check, ' is different from decoded ', base64)
        })
    })

它可能包含一个不可打印的字符,如,在HTML中称为
。我不确定Chrome开发工具在这种情况下会显示什么;它可能真的什么也看不出来

检查
cb.length
,如果它是0,那么
cb
是空的,否则它不是空的(很明显),然后您可以使用
charCodeAt()
查找其中的内容

具有零宽度空格字符的示例代码:

var x=”​";
log(“x==”+x+“”);
console.log(“x.length==”+x.length);

console.log(“x.charCodeAt(0)==”+x.charCodeAt(0));
我们应该在屏幕截图中找到问题吗?比较调试器中的值,提取失败的最小值集并将其发布到此处,检查是否有任何“不可见”的unicode字符(
console.log([…a.slice(0,2)])
),就是这样,非常感谢!b.charCodeAt(0)返回65520…不知道为什么,因为字符串来自第三方数据库包,我希望Chrome调试器至少显示一个豆腐,但至少神秘感消失了。