jQuery技术

45 个实用的 JavaScript 技巧、窍门和最佳实践(3)

字号+ 作者:H5之家 来源:H5之家 2017-11-25 10:23 我要评论( )

而使用: varitems=[12,548,a,2,5478,foo,8852,,Doe,2154,119];items.length;//return11items.splice(3,1);items.length;//return10/*itemswillbeequalto[12,548,a,5478,foo,8852,undefined×1,Doe,2154,119]*/ del

而使用:

var items = [12, 548 ,'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' ,2154 , 119 ]; items.length; // return 11items.splice(3,1) ; items.length; // return 10/* items will be equal to [12, 548, "a", 5478, "foo", 8852, undefined × 1, "Doe", 2154,       119]   */

delete 方法应该被用来删除一个对象的某个属性。

21. 使用 length 来截短一个数组

跟上面的清空数组的方式类似,我们使用 length 属性来截短一个数组。

var myArray = [12 , 222 , 1000 , 124 , 98 , 10 ]; myArray.length = 4; // myArray will be equal to [12 , 222 , 1000 , 124].

此外,如果你将一个数组的 length 设置成一个比现在大的值,那么这个数组的长度就会被改变,会增加新的 undefined 的项补上。 数组的 length 不是一个只读属性。

myArray.length = 10; // the new array length is 10myArray[myArray.length - 1] ; // undefined22. 使用逻辑 AND/OR 做条件判断var foo = 10; foo == 10 && doSomething(); // 等价于 if (foo == 10) doSomething(); foo == 5 || doSomething(); // 等价于 if (foo != 5) doSomething();

逻辑 AND 还可以被使用来为函数参数设置默认值

function doSomething(arg1){     Arg1 = arg1 || 10; // 如果arg1没有被设置的话,Arg1将被默认设成10 }23. 使用 map() 方法来遍历一个数组里的项var squares = [1,2,3,4].map(function (val) {      return val * val; });// squares will be equal to [1, 4, 9, 16]24. 四舍五入一个数字,保留N位小数var num =2.443242342;num = num.toFixed(4);  // num will be equal to 2.443225 – 浮点数问题0.1 + 0.2 === 0.3 // is false9007199254740992 + 1 // is equal to 90071992547409929007199254740992 + 2 // is equal to 9007199254740994

为什么会这样? 0.1+0.2 等于 0.30000000000000004。你要知道,所有的 JavaScript 数字在内部都是以 64 位二进制表示的浮点数,符合IEEE 754 标准。更多的介绍,可以阅读这篇博文。你可以使用 toFixed() 和 toPrecision() 方法解决这个问题。

26. 使用for-in遍历一个对象内部属性的时候注意检查属性

下面的代码片段能够避免在遍历一个对象属性的时候访问原型的属性

for (var name in object) {    if (object.hasOwnProperty(name)) {         // do something with name     } }27. 逗号操作符var a = 0;var b = ( a++, 99 );console.log(a);  // a will be equal to 1console.log(b);  // b is equal to 9928. 缓存需要计算和查询(calculation or querying)的变量

对于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) ; // falseisFinite("foo"); // falseisFinite("10"); // trueisFinite(10);   // trueisFinite(undifined);  // falseisFinite();   // falseisFinite(null);  // true  !!!30. 避免数组中的负数索引(negative indexes)var numbersArray = [1,2,3,4,5]; var from = numbersArray.indexOf("foo") ;  // from is equal to -1numbersArray.splice(from,2);    // will return [5]

确保调用 indexOf 时的参数不是负数。

31. 基于JSON的序列化和反序列化(serialization and deserialization)var person = {name :'Saad', age : 26, department : {ID : 15, name : "R&D"} }; var stringFromPerson = JSON.stringify(person); /* stringFromPerson is equal to "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}"   */ var personFromString = JSON.parse(stringFromPerson); /* personFromString is equal to person object  */32. 避免使用 eval() 和 Function 构造函数

 

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

相关文章
  • 实用的那才是最好的!xp使用技巧分享

    实用的那才是最好的!xp使用技巧分享

    2017-11-22 12:24

  • 一款特好用的JavaScript框架 JQuery

    一款特好用的JavaScript框架 JQuery

    2017-11-17 08:11

  • 从零开始学习 jQuery(十)jQueryUI常用功能实战

    从零开始学习 jQuery(十)jQueryUI常用功能实战

    2017-11-14 17:00

  • [教学视频]jQuery实战

    [教学视频]jQuery实战

    2017-11-12 10:00

网友点评