如果我在Chrome的控制台中输入此内容,则会收到以下警报:
'some string'-alert(1)-'another string'
如果我输入以下内容,我会得到Uncaught SyntaxError: Unexpected identifier
:
'some string'alert(1)'another string'
使警报能够执行的连字符的意义是什么?
第一个计算为:字符串 .. 减去 ..函数调用的结果 .. 减号 ..字符串。
对字符串使用减法可将它们转换为数字或NaN
警报触发仅仅是因为它是一个函数。它的返回值未定义。
因此,在警报触发后,您实际上NaN - undefined - NaN
返回NaN
这是您在控制台中看到的内容
因为Javascript不是强类型,所以你可以(尝试)减去字符串。因此,解释器正在评估表达式的每个部分,其中之一是alert
.这会导致出现一个弹出窗口。由于语法不正确,解释器/编译器无法编译第二个。