JSON

javascript语言使用技巧及注意事项总结(2)

字号+ 作者:H5之家 来源:H5之家 2015-11-24 12:38 我要评论( )

var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411 ]; var maxInNumbers = Math.max.apply(Math, numbers); var minInNumbers = Math.min.apply(Math, numbers); 19.清空数组 var myArray = [12 ,

var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411]; var maxInNumbers = Math.max.apply(Math, numbers); var minInNumbers = Math.min.apply(Math, numbers);

 

19.清空数组

var myArray = [12 , 222 , 1000 ]; myArray.length = 0; // myArray will be equal to [].

var myArray = [12 , 222 , 1000 ]; myArray=[];

 

20.不要直接从数组中delete或remove元素

  如果对数组元素直接使用delete,其实并没有删除,只是将元素置为了undefined。数组元素删除应使用splice。

切忌:

var items = [12, 548 ,‘a‘ , 2 , 5478 , ‘foo‘ , 8852, , ‘Doe‘ ,2154 , 119 ]; items.length; items[3]; // return true items.length; // return 11 /* items 结果为 [12, 548, "a", undefined × 1, 5478, "foo", 8852, undefined × 1, "Doe", 2154, 119] */

 

而应:

var items = [12, 548 ,‘a‘ , 2 , 5478 , ‘foo‘ , 8852, , ‘Doe‘ ,2154 , 119 ]; items.length; // return 11 items.splice(3,1) ; items.length; // return 10 /* items 结果为 [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 10 myArray[myArray.length - 1] ; // undefined

 

22.在条件中使用逻辑与或

var foo = 10; foo == 10 && doSomething(); // is the same thing as if (foo == 10) doSomething(); foo == 5 || doSomething(); // is the same thing as if (foo != 5) doSomething();

 

逻辑或还可用来设置默认值,比如函数参数的默认值。

function doSomething(arg1){ arg1 = arg1 || 10; // arg1 will have 10 as a default value if it’s not already set }

 

23.使得map()函数方法对数据循环

var squares = [1,2,3,4].map(function (val) { return val * val; }); // squares will be equal to [1, 4, 9, 16]

 

24.保留指定小数位数

var num =2.443242342; num = num.toFixed(4); // num will be equal to 2.4432

注意,toFixec()返回的是字符串,不是数字。

25.浮点计算的问题

0.1 + 0.2 === 0.3 // is false 9007199254740992 + 1 // is equal to 9007199254740992 9007199254740992 + 2 // is equal to 9007199254740994

为什么呢?因为0.1+0.2等于0.30000000000000004。JavaScript的数字都遵循IEEE 754标准构建,在内部都是64位浮点小数表示,具体可以参见JavaScript中的数字是如何编码的.

可以通过使用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 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.避免在数组中使用负数做索引

 

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

相关文章
  • Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别

    Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别

    2016-01-18 17:28

  • 正则表达式优化JSON字符串的技巧

    正则表达式优化JSON字符串的技巧

    2016-01-18 09:06

  • Linux学习笔记:MySQL字符集

    Linux学习笔记:MySQL字符集

    2016-01-17 18:24

  • PHP学习之字符串比较和查找

    PHP学习之字符串比较和查找

    2016-01-17 18:23

网友点评