关于javascript一个奇怪的with语法
天蓬老师
天蓬老师 2017-04-10 14:35:18
[JavaScript讨论组]

今天使用百度分享的一段代码,看到有这么一句(可能是机器生成的):

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='+~(-new Date()/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[]

这段代码应该如何理解的??

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
PHPz
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

结论,如果这代码是人写的,那他一定需要治疗。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号