• JS深入理解系列(一):编写高质量代码


    for循环中,你可以循环取得数组或是数组类似对象的值,譬如argumentsHTMLCollection对象。通常的循环形式如下:

    // 次佳的循环
    for (var i = 0; i < myarray.length; i++) {
    // 使用myarray[i]做点什么
    }

     

    这种形式的循环的不足在于每次循环的时候数组的长度都要去获取下。这回降低你的代码,尤其当myarray不是数组,而是一个HTMLCollection对象的时候。

    HTMLCollections指的是DOM方法返回的对象,例如:

    document.getElementsByName()
    document.getElementsByClassName()
    document.getElementsByTagName()

     

    还有其他一些HTMLCollections,这些是在DOM标准之前引进并且现在还在使用的。有:

    document.images: 页面上所有的图片元素
    document.links : 所有a标签元素
    document.forms : 所有表单
    document.forms[0].elements : 页面上第一个表单中的所有域

     

    集合的麻烦在于它们实时查询基本文档(HTML页面)。这意味着每次你访问任何集合的长度,你要实时查询DOM,而DOM操作一般都是比较昂贵的。

    这就是为什么当你循环获取值时,缓存数组(或集合)的长度是比较好的形式,正如下面代码显示的:

    for (var i = 0, max = myarray.length; i < max; i++) {
    // 使用myarray[i]做点什么
    }

     

    这样,在这个循环过程中,你只检索了一次长度值。

     

     

    使用parseInt()你可以从字符串中获取数值,该方法接受另一个基数参数,这经常省略,但不应该。当字符串以”0″开头的时候就有可能会出问 题,例如,部分时间进入表单域,在ECMAScript 3中,开头为”0″的字符串被当做8进制处理了,但这已在ECMAScript 5中改变了。为了避免矛盾和意外的结果,总是指定基数参数。

    var month = "06",
    year = "09";
    month = parseInt(month, 10);
    year = parseInt(year, 10);

     

    此例中,如果你忽略了基数参数,如parseInt(year),返回的值将是0,因为“09”被当做8进制(好比执行 parseInt( year, 8 )),而09在8进制中不是个有效数字。

    替换方法是将字符串转换成数字,包括:

    +"08" // 结果是 8
    Number("08") // 8

     

    这些通常快于parseInt(),因为parseInt()方法,顾名思意,不是简单地解析与转换。但是,如果你想输入例如“08 hello”,parseInt()将返回数字,而其它以NaN告终。

  • 相关阅读:
    《深入理解C#》泛型高级
    vs2019 插件下载慢的解决方法
    C# Tuple和 ValueTuple
    前端ajax用json方式请求 后端php 用 $GLOBALS['HTTP_RAW_POST_DATA'] 取值
    Vue之Axios跨域问题解决方案
    Jquery自定义方法获取URL后面参数
    C# List 某行数据置顶
    EF空字段使用contains查询的解决办法
    sql语句查询,多字段like模糊查询优化
    Asp.Net Core中间件
  • 原文地址:https://www.cnblogs.com/tianboblog/p/3559944.html
Copyright © 2020-2023  润新知