【发布时间】:2013-01-15 20:50:43
【问题描述】:
我正在查看 GMail 执行的一些 AJAX 调用,我注意到有时调用的返回值以数字开头。示例:(注意第一行后面没有分号)
3
[1, 2];
如果我将它输入到 JavaScript 控制台,我会得到 undefined 返回。但是,如果第二个参数是数字或字符串,我会返回第二个参数。示例:
3
4
返回 4。
我的猜测是他们这样做是为了阻止 jsonp 类型的攻击,但是,有谁知道正在进行什么基础评估?在第二种情况下,我相信在第一行之后“插入”一个分号,这将使返回 4 有意义。但是,我想不出第一个表达式会返回 undefined 的原因。
【问题讨论】:
-
并且在安全性方面(谷歌可能已经意识到这一点并放置了一个无意义的最后一个元素或其他东西)这实际上比
{"d":}包装器要糟糕得多 - 通过在Number原型,可以确定最后一个元素的内容是否匹配某个值。 (因此,如果有人打算这样做以修复 Firefox 2- 错误...请注意!=)) -
(是的,看起来 Gmail 中的最后一个数字总是
0。无论如何...) -
啊,因为逗号运算符将返回其集合中的最后一个元素。很有趣。
标签: javascript json jsonp