zoukankan      html  css  js  c++  java
  • javascript中with语句的用法

    JavaScript 有个 with 关键字, with 语句的原本用意是为逐级的对象访问提供命名空间式的速写方式。也就是在指定的代码区域, 直接通过节点名称调用对象。

    我们已经知道,用变量的作用域和作用域链(即一个按顺序检索的对象列表)来进行变量名解析,而with 语句就是用于暂修改作用域链的,其语法为:

    with(object)
    statement

    该语句可以有效地将object添加到作用域链的头部,然后执行statement,再把作用域链恢复到原始状态。

    例如:

    1 with(frames[1].document.forms[0]){
    2     //此处直接访问表单元素。例如:
    3     name.value = ‘小小子’;
    4     address.value = ‘http://www.xiaoxiaozi.com/’;
    5     email.value =’yufulong@gmail.com’;
    6 }

    表单属性名前的前缀——frames[1].document.forms[0] 就不用重复写。

    这个对象不过是作用域链的一个临时部分,当JavaScript需要解析像 address这样的标识符时就会自动搜索它。

    但是with语句有个很大的缺陷:

    使用with语句的JavaScript代码很难优化,因此它的运算速度比不使用with语句的等价代码要慢得多。
    
    而且,在with语句中的函数定义和变量初始化可能会产生令人惊讶的、相抵触的行为。(虽然作者没有举例,不过这话可够吓人的)。
    
    因此我们避免使用with语句。 

    所以应该避免使用with语句。

    而对于with语句实现的语句简化,我们完全可以使用变量来实现。

    例如:

    1 var form = frames[1].document.forms[0];
    2 form.name.value = ‘小小子’;
    3 form.address.value = ‘http://www.xiaoxiaozi.com/’;
    4 form.email.value = ‘yufulong@gmail.com’;
  • 相关阅读:
    Leetcode题库——7.反转整数
    (tomcat)tomcat启动过慢
    (tomcat)查看tomcat安装路径
    (JDK)cmd中只能执行java不能执行javac命令
    (课)学习进度报告二
    (数据导入)csv文件数据导入数据库
    (编码转换)转换文件编码
    (python开发)用cmd下载Python的第三方库所遇问题及解决方法
    (课)学习进度报告一
    (课)淘宝网质量属性场景
  • 原文地址:https://www.cnblogs.com/cuixi/p/3362784.html
Copyright © 2011-2022 走看看