Javascript 古怪的行为

Javascript 古怪的行为,javascript,google-chrome,Javascript,Google Chrome,此代码在Chrome(fiddle)上的行为很有趣: 首先,尽管代码被包装在try-catch中,但仍会引发一个错误: 无法打开具有无效URL“%36:%04-=”的窗口 其次,在URL中插入无关字符,即%3和%04 为什么try-catch没有截获错误,为什么URL有这些额外的字符?首先:正如pimvdb所说,这是因为它实际上不是一个例外 第二个:%04是由JSFIDLE插入的不可见字符。%36是数字6,当为URL方案编码时,Chrome将其转换为%36 try/catch没有任何效果,因为它

此代码在Chrome(fiddle)上的行为很有趣:

首先,尽管代码被包装在try-catch中,但仍会引发一个错误:

无法打开具有无效URL“%36:%04-=”的窗口

其次,在URL中插入无关字符,即
%3
%04


为什么try-catch没有截获错误,为什么URL有这些额外的字符?

首先:正如pimvdb所说,这是因为它实际上不是一个例外


第二个:%04是由JSFIDLE插入的不可见字符。%36是数字6,当为URL方案编码时,Chrome将其转换为%36

try/
catch
没有任何效果,因为它不是例外。这只是一个打印到控制台的文件。你可以证明:

open('6:-=');
console.log(1);  // logged as usual

基本上,它与控制台类似。error()也不会引发异常,但它会向控制台打印类似异常的消息。

您的小提琴在冒号后面的
6:-=
字符串中包含一个ASCII码为4的不可打印字符,在显示的错误中,该字符串被URL编码为
%04
。此外,所提供URL的
6:
部分被解释为URL方案,不能以数字开头,因此Chrome URL显然也将6引用为
%36
,尽管RFC未规定此类行为。

谢谢。你是如何生成带有行号和全部的链接的?@Randomblue:点击行号:o)嘿,很好。当涉及到这些字符时,JSFIDLE真的很烦人。@Randomblue JSFIDLE将控制字符插入到代码中,以跟踪代码的结尾。有时,当我们把代码添加到小提琴的末尾时,字符会留在代码中。@blueoops,是的。添加了错误的链接。检查编辑的链接。
open('6:-=');
console.log(1);  // logged as usual