为了账号安全,请及时绑定邮箱和手机立即绑定

关于javascript一个奇怪的with语法

关于javascript一个奇怪的with语法

慕森王 2019-04-13 08:45:56
今天使用百度分享的一段代码,看到有这么一句(可能是机器生成的):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)];在控制台输出:1undefined如果这样:with({a:1,b:2})[console.log(a)];在控制台输出:1[Object{__exposedProps__={...},toString=function()}]期待有朋友帮忙解释:with()0[]这段代码应该如何理解的??
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

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
结论,如果这代码是人写的,那他一定需要治疗。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 296 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信