js语法中with的学习
来源:互联网 发布:淘宝网孕妇秋装套装 编辑:程序博客网 时间:2024/06/06 00:49
首先呢,严格模式下with报错,而且with在js引擎环境下运行缓慢,所以并不建议使用。当然了,通过各种资料,with貌似都是用来拓展作用域,延长作用域链,简化书写,具体的就不深入了。
with 语句用于设置代码在特定对象中的作用域。
它的语法:with (expression) statement
毕竟,with运行缓慢!知道有这么个东西就好。
举个例子
var obj={a:"11",b:"22"}with(obj){ console.log(a,b)}
with能够扩充obj对象的作用域,我们可以直接书写obj中对象a,b;如果不是因为运行缓慢这一个巨大缺欠,到也方便。换成我们普通写法,那就得obj.a ,obj.b 有点麻烦。既然是扩展作用域,那么我们也可以干点别的。
var obj ={ a:40, fn:function(){ with(this){ var a=100; console.log(a); } }}obj.fn();console.log(obj.a);简单说明下,对象中有函数,with中的this代表是obj对象,所以with扩展了obj作用域,那么fn中的变量a就会由原来的fn内部提升变为obj对象提升,所以第一个打印a结果是100,而外部打印的obj.a结果也明显了,由于with影响,fn内部a=100修改了obj.a的值,所以也是100
由于这部分功能,某些js插件库依旧使用with简化书写,但是大家也看出来,with弊端明显,不仅慢,而且很多时候不利于代码维护和阅读。就好比上面作用域扩充,直接就导致变量a被覆盖。如果是大量代码,维护起来难,阅读代码都费劲。
由于阅读难,那么个人使用with也容易造成潜在bug,因为代码作用域扩充,稍不注意,跳开函数作用域,各种全局变量,就很头疼。
最后,对于js引擎解析with时候,查找相关属性先后顺序,不深入了,具体的大家可以看下参考链接以及百度谷歌。
参考链接:http://www.jb51.net/article/79474.htm
阅读全文
0 0
- js语法中with的学习
- SQL中WITH AS语法的使用
- JS中常用的语法
- js中遍历的语法
- js中with的用法
- js中with的用法
- JS中with的用法
- js中with的用法
- js的坑 js学习特殊语法
- JS 中的with语法现象
- Python的With语法
- JS中常用的语法(转)
- js语法中if语句的替代
- js中replace方法的语法
- js中with和this的用法
- js中with、this的用法
- JS中with的用法举例
- js中with、this的用法
- 如何写一个软件复位信号?
- [noip2016]玩具谜题 题解
- python3.6.3+opencv3.3.0学习笔记七--人脸识别效果实录
- 让Android Studio自动实现所有的接口函数
- Spring--7.bean管理(注解)
- js语法中with的学习
- MATLAB的神经网络工具箱介绍
- Samall String
- maven--2.工程结构和命令
- SSM(Spring+Spring MVC+Mybatis)框架整合过程
- UVA12012 KMP简单应用
- RadioButton(单选按钮)+Checkbox(复选框)
- C++代码格式规范引导(一):引言与代码布局
- 算法:枚举法---kotlin