Javascript 为什么输入字段中的同一字符串和JS中变量字符串的静态值的字符串长度不同

Javascript 为什么输入字段中的同一字符串和JS中变量字符串的静态值的字符串长度不同,javascript,Javascript,我在javascript中得到了两个不同的字符串长度。一个来自输入字段,另一个来自直接js字符串值。例如,如果我将输入字段值设置为与js变量str2中的静态输入相同,即:\u002Funits\u002F0004\u002F62a345b3-ead7-4d06-a65b-243fc54780ec。对于来自变量str和str2的相同输入,我在控制台中得到不同的字符串长度(63和48) var checklen=function(){ var str=document.getElementById

我在javascript中得到了两个不同的字符串长度。一个来自输入字段,另一个来自直接js字符串值。例如,如果我将输入字段值设置为与js变量str2中的静态输入相同,即:
\u002Funits\u002F0004\u002F62a345b3-ead7-4d06-a65b-243fc54780ec
。对于来自变量
str
str2
的相同输入,我在控制台中得到不同的字符串长度(63和48)

var checklen=function(){
var str=document.getElementById(“text”).value;
str=str.trim();
console.log(str);
console.log(str.length);
var str2=“\u002Funits\u002F0004\u002F62a345b3-ead7-4d06-a65b-243fc54780ec”;
console.log(str2.length);
}

正文

因为当您像这样直接将字符串放入javascript时

  var str2 = "\u002Funits\u002F0004\u002F62a345b3-ead7-4d06-a65b-243fc54780ec";
javascript将
\
解释为特殊字符转义,因此结果将如
colsole.log
但是,如果放置两个
\\
,第一个将取消第二个,字符串将按预期运行

var checklen=function(){
var str=document.getElementById(“text”).value;
str=str.trim();
console.log(str);
console.log(str.length);
var str2=“\u002Funits\u002F0004\u002F62a345b3-ead7-4d06-a65b-243fc54780ec”;
console.log(str2.length);
console.log(str);
控制台日志(str2);
var str3=“\\u002Funits\\u002F0004\\u002F62a345b3-ead7-4d06-a65b-243fc54780ec”;
console.log(“str len:,str.length”);
console.log(“str2 len:,str2.length”);
console.log(“str3 len:,str3.length”);
console.log(“str:”,str);
console.log(“str2:”,str2);
日志(“str3:,str3”);
}

正文

@threeFatCat:D如果能更好地查看文章,你也可以自己写。否则,你们可以编辑我的答案,让它成为更好的答案。就像安丹说的。“\u002”是一种UTF-8(十六进制),将转换为“/”。第二个str2长度是如何计算为48的?@alamin_cse07 javascript将\u002f解码为/因为您的字符串中有三个这样的代码,并且每一个代码的长度为6个字符,它将删除18个字符,而将在字符串中添加/中的3个字符,因此63-18+3=48