小郑搞码事:为什么建议大家在JS代码中,永远不要使用with语句

点击右上方红色按钮关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!

首先,with语句的本意是提供一个访问深层嵌套对象成员的快捷方式。

一,先搞清with语句的作用

一点都不难理解,下面来看一例子:

小郑搞码事:为什么建议大家在JS代码中,永远不要使用with语句

这个例子比较简单,实例化一个构造函数。然后用with将它的属性输出来,同时在with语句中修改属性名称。

输出一:小郑 100 body

输出二:小郑

可以看出,修改属性成功,with中也将对象的属性都直接方法成功。然而,糟糕的是,当设置新成员属性时,它的行为就会变得非常糟糕。

二,有点糟糕的问题

如下代码:

小郑搞码事:为什么建议大家在JS代码中,永远不要使用with语句

在with语句里我添加了一个属性weight,我本意是想给这个people对象添加一个属性。然而却没有添加成功。

输出一:小郑 100 80

输出二:undefined

最后总结建议:

出于这种问题,所以永远不要使用with语句,而用var去代替它。其实JSLint不期望看到with语句。


分享到:


相關文章: