gpt4 book ai didi

javascript - 如果没有转义任何内容,单引号/双引号有什么区别吗?

转载 作者:行者123 更新时间:2023-11-27 22:43:37 26 4
gpt4 key购买 nike

据我所知,'mars%22%3A%22'"mars%22%3A%22" 是等效的,因为没有任何内容被转义.

我创建 javscript 书签已经有一段时间了。有一次,当按原样粘贴到 Chrome 中的书签时,它停止工作。

经过多次猜测和检查,我发现了一个解决方案:
一对双引号必须是单引号。为什么?

下面的 split() 内带有单引号的行不会在小书签中造成任何问题:

loadDoc("/page1/" + aArray[i].href.split('mars%22%3A%22')[1].slice(0,7),i);

下面的全双引号行将导致小书签根本不运行:

loadDoc("/page1/" + aArray[i].href.split("mars%22%3A%22")[1].slice(0,7),i);

控制台中没有显示错误。

请注意,如果直接粘贴到 JavaScript 控制台,双引号版本将运行得很好!

我不明白什么?

最佳答案

JavaScript 并不像 Ruby 这样的语言那样区分单引号和双引号(其中字符串插值和反斜杠转义序列仅适用于双引号字符串)。两种类型的引号在 JavaScript 中具有相同的含义。

唯一的区别是,无论您使用哪种类型的引号,都不能在字符串内使用相同的引号,除非您使用反斜杠对其进行转义或对其进行 URL 编码。

对于您的小书签,浏览器在执行之前会对整个 javascript:... URL 字符串进行转义。您可以使用 javascript:alert('foo%22bar') 等简单案例进行测试,该案例将提醒文本 foo"bar

因此,您的字符串 mars%22%3A%22 在代码运行之前会转换为 mars":"。由于该字符串中有双引号,因此只能在单引号字符串内使用。

顺便说一句,我的预感是否正确,您可能正在尝试解析或操作此处的 JSON 文本?如果是的话,最好使用 JSON.parse() 而不是原始字符串操作。

关于javascript - 如果没有转义任何内容,单引号/双引号有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38579432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com