js中的with了解一下
创始人
2024-11-11 05:09:37
0

官方提示:已弃用, 不再推荐使用该特性。
虽然一些浏览器仍然支持它,但也许已从相关的 web 标准中移除,也许正准备移除或出于兼容性而保留。

来了解一下为啥要弃用的理由:

语法: with(expression){…}

expression: 将给定的表达式添加到在评估语句时使用的作用域链上。with会创建一个新的作用域,

就是说,with 代码块内部,每个变量首先会指向 expression 对象属性,如果expression 对象上面没有这个属性,那么就会依次向上找,如果一直找不到,最终就会在顶层定义一个属性名的变量,这时候就会发生变量的泄漏

上代码演示吧:

function test(obj){     with(obj){         age = 100;     } } 

我们定义了一个函数,参数为一个对象,我们想通过with的形式给传入的obj对象修改age属性

let obj1 = { name: 'mike', age: 18} let obj2 = { name: 'lili' } 

我们分别定义了两个对象,一个包含age属性,另一个不包含age属性

下面我们来运行一下test方法吧

test(obj1) obj1 // {name: 'mike', age: 100} test(obj2) obj2 // {name: 'lili'} age // 100 

通过代码的执行,我们看到包含age属性的对象,通过with中的执行语句修改了对象的age属性,但是不包含age属性的对象,并没有修改

实际上with中的age = 100,开始的时候会找obj2上面时候有age属性,如果没有,他会往上面找,显然test方法中也没有这个age,那么就会再次往上找,直到全局作用域,还是没有,这时候就会新建一个age属性,然后赋值为100了
显然上面操作obj2的时候是有问题的,我们并不是要在全局新建一个age的属性,而且函数的数据也被泄漏到全局中了

所以,弃用是必须的

上一篇:HCIP笔记1

下一篇:100条超牛的DOS命令

相关内容

热门资讯

推出新举措!微乐小程序免费黑科... 推出新举措!微乐小程序免费黑科技,微乐自建房脚本入口(作弊器)讲义教程(确实真的有挂)1、辅助软件下...
透视总结!微乐小程序黑科技(外... 透视总结!微乐小程序黑科技(外挂),微乐广西自建房免费黑科技下载,教程演示(有挂教程)-哔哩哔哩破解...
微乐小程序真的有挂!微乐辅助脚... 微乐小程序真的有挂!微乐辅助脚本(开挂)技巧-一直揭幕真的是有挂1、玩家可以在透视最简单三个步骤对游...
目前!微乐小程序免费黑科技,微... 目前!微乐小程序免费黑科技,微乐小程序免费黑科技下载方法(作弊器)法门教程(总是有挂)1、进入到是否...
透视必备!微乐小程序黑科技(外... 透视必备!微乐小程序黑科技(外挂),微信小程序微乐为什么老输,教程资料(有挂教学)-哔哩哔哩1、每一...
微乐小程序透视辅助!微乐山西脚... 微乐小程序透视辅助!微乐山西脚本插件(开挂)教程-其实辅助真的是有挂1、破解器简单,机器人操作,插件...
据悉!微乐小程序黑科技,微乐自... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很多玩家在这款游戏中打...
透视曝光!微乐小程序免费黑科技... 透视曝光!微乐小程序免费黑科技(外挂),在哪里下载微乐自建房辅助软件,教程模块(有挂方式)-哔哩哔哩...
微乐小程序真的有挂!小程序跑得... 微乐小程序真的有挂!小程序跑得快的技巧(开挂)软件-原来科普真的是有挂1、辅助软件下载优化,底牌透视...
日前!微乐小程序黑科技,微信微... 日前!微乐小程序黑科技,微信微乐辅助器免费(作弊器)讲义教程(一直是有挂)1、游戏颠覆性的策略玩法,...