JSON

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

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

var a = 0; var b = ( a++, 99 ); console.log(a); // a will be equal to 1 console.log(b); // b is equal to 99 28、临时存储用于计算和查询的变量 在jQuery选择器中,可以临时存储整个DOM元素。 复制代码 代码


  var a = 0;
var b = ( a++, 99 );
console.log(a);  // a will be equal to 1
console.log(b);  // b is equal to 99


28、临时存储用于计算和查询的变量
在jQuery选择器中,可以临时存储整个DOM元素。

复制代码 代码如下:


  var navright = document.querySelector('#right');
var navleft = document.querySelector('#left');
var navup = document.querySelector('#up');
var navdown = document.querySelector('#down');


29、提前检查传入isFinite()的参数

复制代码 代码如下:


  isFinite(0/0) ; // false
isFinite("foo"); // false
isFinite("10"); // true
isFinite(10);   // true
isFinite(undefined);  // false
isFinite();   // false
isFinite(null);  // true,这点当特别注意


30、避免在数组中使用负数做索引

复制代码 代码如下:


  var numbersArray = [1,2,3,4,5];
var from = numbersArray.indexOf("foo") ;  // from is equal to -1
numbersArray.splice(from,2);    // will return [5]


注意传给splice的索引参数不要是负数,当是负数时,会从数组结尾处删除元素。

31、用JSON来序列化与反序列化

复制代码 代码如下:


  var person = {name :'Saad', age : 26, department : {ID : 15, name : "R&D"} };
var stringFromPerson = JSON.stringify(person);
/* stringFromPerson 结果为 "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}"   */
var personFromString = JSON.parse(stringFromPerson);
/* personFromString 的值与 person 对象相同  */


32、不要使用eval()或者函数构造器
eval()和函数构造器(Function consturctor)的开销较大,每次调用,JavaScript引擎都要将源代码转换为可执行的代码。

复制代码 代码如下:


  var func1 = new Function(functionCode);
var func2 = eval(functionCode);


33、避免使用with()
使用with()可以把变量加入到全局作用域中,因此,如果有其它的同名变量,一来容易混淆,二来值也会被覆盖。

34、不要对数组使用for-in
避免:

复制代码 代码如下:


  var sum = 0; 
for (var i in arrayNumbers) { 
    sum += arrayNumbers[i]; 
}


而是:

复制代码 代码如下:


  var sum = 0; 
for (var i = 0, len = arrayNumbers.length; i < len; i++) { 
    sum += arrayNumbers[i]; 
}


另外一个好处是,i和len两个变量是在for循环的第一个声明中,二者只会初始化一次,这要比下面这种写法快:

复制代码 代码如下:


  for (var i = 0; i < arrayNumbers.length; i++)


35、传给setInterval()和setTimeout()时使用函数而不是字符串
如果传给setTimeout()和setInterval()一个字符串,他们将会用类似于eval方式进行转换,这肯定会要慢些,因此不要使用:

复制代码 代码如下:


setInterval('doSomethingPeriodically()', 1000); 
setTimeout('doSomethingAfterFiveSeconds()', 5000);


而是用:

复制代码 代码如下:


setInterval(doSomethingPeriodically, 1000); 
setTimeout(doSomethingAfterFiveSeconds, 5000);

36、使用switch/case代替一大叠的if/else

当判断有超过两个分支的时候使用switch/case要更快一些,而且也更优雅,更利于代码的组织,当然,如果有超过10个分支,就不要使用switch/case了。

37、在switch/case中使用数字区间

其实,switch/case中的case条件,还可以这样写:

复制代码 代码如下:


  function getCategory(age) { 
    var category = ""; 
    switch (true) { 
        case isNaN(age): 
            category = "not an age"; 
            break; 
        case (age >= 50): 
            category = "Old"; 
            break; 
        case (age <= 20): 
            category = "Baby"; 
            break; 
        default: 
            category = "Young"; 
            break; 
    }; 
    return category; 

getCategory(5);  // 将返回 "Baby"


38、使用对象作为对象的原型

下面这样,便可以给定对象作为参数,来创建以此为原型的新对象:

复制代码 代码如下:


  function clone(object) { 
    function OneShotConstructor(){};
    OneShotConstructor.prototype = object; 
    return new OneShotConstructor();
}
clone(Array).prototype ;  // []


39、HTML字段转换函数

复制代码 代码如下:

 

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

网友点评