尝试回答此问题后Another SO post我注意到这Function('return "\\101\\40\\171\\145\\154\\154\\157\\167\\40\\142\\165\\164\\164\\157\\156\\56"')()要么Function('return "\101\40\171\145\154\154\157\167\40\142\165\164\164\157\156\56"')()两者都返回相同的字符串-“黄色按钮”。关于我上面链接的问题,JS代码段在标记中运行。过去我还指出,当处理某些JSON字符串时,需要在'\'上使用'\'什么时候有必要?为什么有必要?如果没有必要,为什么要这样做?链接和其他阅读对我有帮助。更新:也许我没有提供足够的信息来询问这个问题。我了解何时以及为何需要转义。我想知道的是两件事在上面的链接中,代码具有两个功能:一个像这样嵌套在另一个Function( Function( 'return\'\\141\\75\\160\\162\\157\\155\\160\\164\\50\\47\\105\\156\\164\\162\\145\\172\\40\\154\\145\\40\\155\\157\\164\\40\\144\\145\\40\\160\\141\\163\\163\\145\\47\\51\\73\\151\\146\\50\\141\\75\\75\\47\\164\\157\\164\\157\\61\\62\\63\\154\\157\\154\\47\\51\\173\\141\\154\\145\\162\\164\\50\\47\\142\\162\\141\\166\\157\\47\\51\\73\\175\\145\\154\\163\\145\\173\\141\\154\\145\\162\\164\\50\\47\\146\\141\\151\\154\\56\\56\\56\\47\\51\\73\\175\'')())()这个脚本和这个脚本一样好用Function( Function('return "\141\75\160\162\157\155\160\164\50\47\105\156\164\162\145\172\40\154\145\40\155\157\164\40\144\145\40\160\141\163\163\145\47\51\73\151\146\50\141\75\75\47\164\157\164\157\61\62\63\154\157\154\47\51\173\141\154\145\162\164\50\47\142\162\141\166\157\47\51\73\175\145\154\163\145\173\141\154\145\162\164\50\47\146\141\151\154\56\56\56\47\51\73\175"')())()为什么,如果两个脚本都起作用,那么在“ \”上需要“ \\”吗?我在这里缺少什么吗?第二个问题是当在“ \”上需要“ \\”时是否存在基本情况?我认为sventschui即将到达那里,但还没有到。 最佳答案 我认为sventschui有一个正确的想法,让我尝试以另一种方式解释它。当您使用定义字符串时 str1='"\\101\\40\\171\\145\\154\\154\\157\\167\\40\\142\\165\\164\\164\\157\\156\\56"'\\是转义序列,内存中的实际字符串是(包括其周围的引号)"\101\40\171\145\154\154\157\167\40\142\165\164\164\157\156\56"当您将字符串定义为str2="\101\40\171\145\154\154\157\167\40\142\165\164\164\157\156\56"时\101,\40,...是转义序列,内存中的实际字符串为(包括引号在内)"A yellow button"创建Function()时,它会重新评估字符串(如eval),对于第一种情况,str1现在将\101,\40视为转义序列,并且返回的字符串为,不带引号。当对第二个字符串执行相同的操作时,没有转义序列,只有常规字符,因此该字符串不变(除了引号外)var str1 = '"\\101"'; // "\101"var str2 = '"\101"'; // "A"var str1Evaled = eval(str1); // \101 is the escape sequence, outputs Avar str2Evaled = eval(str2); // No escape sequence, a raw Aconsole.log({str1, str2, str1Evaled, str2Evaled});// Object {str1: ""\101"", str2: ""A"", str1Evaled: "A", str2Evaled: "A"}
07-25 20:44