JSON

45个JavaScript编程注意事项、技巧大全【站长博客网】

字号+ 作者:H5之家 来源:H5之家 2017-05-10 15:04 我要评论( )

这篇文章主要介绍了45个JavaScript编程注意事项、技巧大全,在这篇文章里,我将分享一些JavaScript的技巧、秘诀和最佳实践,除了少数几个外,不管是浏览器的JavaScri

相关推荐:    

  • 开源的javascript项目Kissy介绍
  •     
  • Javascript前端UI框架Kit使用指南之Kitjs简介
  •     
  • javascript基本类型详解
  •     
  • Javascript模块化编程详解
  •     
  • Javascript字符串浏览器兼容问题分析
  •     
  • 浅谈Javascript中深复制
  •  

    JavaScript是一个绝冠全球的编程语言,可用于Web开发、移动应用开发(PhoneGap、Appcelerator)、服务器端开发(Node.js和Wakanda)等等。JavaScript还是很多新手踏入编程世界的第一个语言。既可以用来显示浏览器中的简单提示框,也可以通过nodebot或nodruino来控制机器人。能够编写结构清晰、性能高效的JavaScript代码的开发人员,现如今已成了招聘市场最受追捧的人。

    在这篇文章里,我将分享一些JavaScript的技巧、秘诀和最佳实践,除了少数几个外,不管是浏览器的JavaScript引擎,还是服务器端JavaScript解释器,均适用。

    本文中的示例代码,通过了在Google Chrome 30最新版(V8 3.20.17.15)上的测试。

    1、首次为变量赋值时务必使用var关键字

    变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量。

    2、使用===取代==

    ==和!=操作符会在需要的情况下自动转换数据类型。但===和!==不会,它们会同时比较值和数据类型,这也使得它们要比==和!=快。

    复制代码 代码如下:


    [10] === 10    // is false
    [10]  == 10    // is true
    '10' == 10     // is true
    '10' === 10    // is false
    []   == 0     // is true
    [] ===  0     // is false
    '' == false   // is true but true == "a" is false
    '' === false  // is false


    3、underfined、null、0、false、NaN、空字符串的逻辑结果均为false
    4、行尾使用分号

    实践中最好还是使用分号,忘了写也没事,大部分情况下JavaScript解释器都会自动添加。对于为何要使用分号,可参考文章JavaScript中关于分号的真相。

    5、使用对象构造器

    复制代码 代码如下:


      function Person(firstName, lastName){
        this.firstName =  firstName;
        this.lastName = lastName;
    }
    var Saad = new Person("Saad", "Mousliki");


    6、小心使用typeof、instanceof和contructor
    typeof:JavaScript一元操作符,用于以字符串的形式返回变量的原始类型,注意,typeof null也会返回object,大多数的对象类型(数组Array、时间Date等)也会返回object
    contructor:内部原型属性,可以通过代码重写
    instanceof:JavaScript操作符,会在原型链中的构造器中搜索,找到则返回true,否则返回false

    复制代码 代码如下:


    var arr = ["a", "b", "c"];
    typeof arr;   // 返回 "object"
    arr instanceof Array // true
    arr.constructor();  //[]


    7、使用自调用函数
    函数在创建之后直接自动执行,通常称之为自调用匿名函数(Self-Invoked Anonymous Function)或直接调用函数表达式(Immediately Invoked Function Expression )。格式如下:

    复制代码 代码如下:


    (function(){
        // 置于此处的代码将自动执行
    })(); 
    (function(a,b){
        var result = a+b;
        return result;
    })(10,20)

    8、从数组中随机获取成员

    复制代码 代码如下:


    var items = [12, 548 , 'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' , 2145 , 119];
    var  randomItem = items[Math.floor(Math.random() * items.length)];


    9、获取指定范围内的随机数
    这个功能在生成测试用的假数据时特别有数,比如介与指定范围内的工资数。

    复制代码 代码如下:


    var x = Math.floor(Math.random() * (max - min + 1)) + min;


    10、生成从0到指定值的数字数组

    复制代码 代码如下:


    var numbersArray = [] , max = 100;
    for( var i=1; numbersArray.push(i++) < max;);  // numbers = [1,2,3 ... 100]


    11、生成随机的字母数字字符串

    复制代码 代码如下:


      function generateRandomAlphaNum(len) {
        var rdmString = "";
        for( ; rdmString.length < len; rdmString  += Math.random().toString(36).substr(2));
        return  rdmString.substr(0, len);

    12、打乱数字数组的顺序

    复制代码 代码如下:


    var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411];
    numbers = numbers.sort(function(){ return Math.random() - 0.5});
    /* numbers 数组将类似于 [120, 5, 228, -215, 400, 458, -85411, 122205]  */


    这里使用了JavaScript内置的数组排序函数,更好的办法是用专门的代码来实现(如Fisher-Yates算法),可以参见StackOverFlow上的这个讨论。

    13、字符串去空格

    Java、C#和PHP等语言都实现了专门的字符串去空格函数,但JavaScript中是没有的,可以通过下面的代码来为String对象函数一个trim函数:

    复制代码 代码如下:


    String.prototype.trim = function(){return this.replace(/^\s+|\s+$/g, "");};


    新的JavaScript引擎已经有了trim()的原生实现。

    14、数组之间追加

    复制代码 代码如下:


    var array1 = [12 , "foo" , {name "Joe"} , -2458];
    var array2 = ["Doe" , 555 , 100];
    Array.prototype.push.apply(array1, array2);
    /* array1 值为  [12 , "foo" , {name "Joe"} , -2458 , "Doe" , 555 , 100] */


    15、对象转换为数组

    复制代码 代码如下:


      var argArray = Array.prototype.slice.call(arguments);


    16、验证是否是数字

    复制代码 代码如下:


      function isNumber(n){
        return !isNaN(parseFloat(n)) && isFinite(n);
    }


    17、验证是否是数组

    复制代码 代码如下:

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • javascript eval跟JSON之间的联系

      javascript eval跟JSON之间的联系

      2017-05-08 08:00

    • JSON的学习和使用

      JSON的学习和使用

      2017-05-07 17:02

    • android使用ViewPager实现轮播效果

      android使用ViewPager实现轮播效果

      2017-04-28 12:03

    • 用Newtonsoft将json串转为对象的方法(详解)

      用Newtonsoft将json串转为对象的方法(详解)

      2017-04-24 09:00

    网友点评
    ,