一、JSON.parse
当使用JSON.parse转化一个非JSON时,往往会带来这个报错。
但是他们的详则又是格式不同的,具体的原因我还并不清楚,猜测和浏览器内核的处理方法有关。
现在为了日后筛查方便,先进行部分穷举记录。
JSON.parse(*) // . , & 等英文符号,均为此报错
Uncaught SyntaxError: Unexpected token '*'
JSON.parse(‘’)
VM485:1 Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at <anonymous>:1:6
JSON.parse(‘aa’)
VM130:1 Uncaught SyntaxError: Unexpected token aa in JSON at position 0
at JSON.parse ()
at :1:6
(anonymous) @ VM129:1
JSON.parse(-)
Uncaught SyntaxError: Unexpected token ')'
JSON.parse({}) // 对象类均为此报错
VM451:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at <anonymous>:1:6
JSON.parse(undefined)
VM550:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at <anonymous>:1:6
JSON.parse(@) // 。,等中文符号,均为此报错
Uncaught SyntaxError: Invalid or unexpected token
二、obj.()
发现这个的场景是,为了达到完全可配置的目的,使用了 eval(
this.${name}())
的写法。后面demo了一下,发现只要 .()
前面是个object,都可以触发。
let obj = {}; obj.()
Uncaught SyntaxError: Unexpected token '('