• javascript中语句注意点


    对于语句,说明如下:

    1、关于语句要不要加上分号结束符(;),我的观点是给每条语句都加上,不要让引擎去猜测你的程序。不过昨天看到一篇文章和我的观点正好相反,也颇能言之成理,虽然并没有改变我的观点,不过倒也令我的眼界更为宽阔。

    2、对于var语句,由于ECMAScript中有声明提升现象,建议将一个作用域中用到的变量都放到顶部,用一个var语句定义多个变量,这样容易理解,也不易出错。目前很多JS库也多采用这种形式,下面是取自jQuery开始中的代码:

    var document = window.document,
        navigator = window.navigator,
        location = window.location;

    3、用于语句块的({}),也可用于定义对象字面量。在ECMAScript中,没有块级作用域。

    4、对于四种循环语句(do-while、while、for、for-in),由于for-in语句每次循环都会搜索对象本身和其原型,因此效率会比较低。关于for循环语句的优化:

    // 1.一般for循环
    for(var i=0; i < arr.length; i++){
    }
    // 2.上面在每一次循环都会重新计算一次arr的长度,如过arr是dom操作的话,会非常明显的影响效率,可以改进一下
    for(var i=0,l=arr.length; i<l; i++){
    }
    // 3.这样整个循环就只会计算一次长度,如果考虑到递减,还可以修改成
    for(var i=arr.length; i>0; i--){
    }
    // 4.上面不使用中间变量并且只需要计算一次长度,如果再考虑到长度永远是一个不小于0的数,并且在JS中0的Boolean值为false,可以进一步修改成
    for(var i=arr.length; i ; i--){
    }
    // 5.考虑到JS中变量声明提升可能的影响,为了消除隐患,再修改为
    var i=arr.length;
    for(; i ; i--){
    }

    5、对于with语句,虽然有时会提供快捷,但是也常常会导致不可预料的结果,建议少用,甚至不用:

    //1.使用with语句
    with(obj){
        a=b;
    }
    //2.不使用with语句,和1的情况等价
    if(obj.a === undefined){
        a = obj.b || b;
    }else
    {
        obj.a = obj.b || b;
    }
    //3.可能的结果
    a = b;
    a = obj.b;
    obj.a = b;
    obj.a = obj.b;

    第1部分是使用with语句,第2部分是不使用with语句的等价语句,第3部分则是最终可能的运行结果,如果仅从with语句本身来看,很不容易明白程序实际运行时会发生什么。另外,在使用with语句涉及修改的时候,会有不同步的问题,看下面的代码:

    var obj = {
        person:{
            name:'linjisong'
        }    
    };
    with(obj.person){
        obj.person = {
            name:'oulinhai'
        };
        console.info(obj.person.name); //oulinhai
        console.info(name);          //linjisong
    }
    在这里
    会不经意间就产生了一个不同步。

    6、在return语句返回时需注意:

    return
    {
        prop:'value';
    }//由于引擎会自动添加分号,这里实际会返回undefined
    
    return {
        prop:'value';
    }//返回一个对象
  • 相关阅读:
    Solution -「ARC 126F」Affine Sort
    Solution -「ABC 219H」Candles
    Solution -「LOCAL」二进制的世界
    Solution Set -「ABC 217」
    Java 封装
    Java 对象和类
    Java 继承
    牛客网MySQL在线编程
    Linux uniq命令
    Linux 单引号、双引号、反引号
  • 原文地址:https://www.cnblogs.com/sunscheung/p/4388693.html
Copyright © 2020-2023  润新知