关于javascript一个奇怪的with语法

今天使用百度分享的一段代码,看到有这么一句(可能是机器生成的):
with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-newDate()/36e5)]
奇怪的地方是:
with(..)0[];
这段,经测试:
with({a:1,b:2})0[console.log(a)];
在控制台输出:
1
undefined
如果这样:
with({a:1,b:2})[console.log(a)];
在控制台输出:
1
[Object{__exposedProps__={...},toString=function()}]
期待有朋友帮忙解释:
with()0[]
这段代码应该如何理解的??
慕森王
浏览 297回答 2
2回答

繁华开满天机

a=0;a["toString"];0["toString"];b=console.log(4);a[b];//a[undefined]a[console.log(4)];//当然返回undefined啦with({p:4})console.log(p);//with后面可以跟语句,多条语句才需要{}啊。with({p:4})a[p];with({p:4})a[console.log(p)];with({p:4})0[console.log(p)];//返回undefined结论,如果这代码是人写的,那他一定需要治疗。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript