JavaScript的一些技巧

本文内容整理自网络。

主要列举了使用JavaScript时应该注意的一些技巧。

 

1 变量使用前,需要使用var关键字声明,避免使用全局变量;

 

2 尽量使用===(!==),而不用==(!=);

===(!==)操作不执行转换,在速度上被认为优于==(!=)

 

3 使用闭包实现私有变量;

 

4 语句结尾不省略分号;

 

5 构造函数首字母大写,通过new关键字调用;

 

6 typeof、instanceof和constructor的一些坑

var arr = [];
typeof arr;  //返回“object"
arr instanceof Array //返回true
arr.constructor();     //返回[]
arr.constructor;       //返回Array()

 

7 立即执行匿名函数

(function(a, b){
  return a + b;
})(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 在某个范围间产生一个随机数

function getRondomNumBetween(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

 

10 生成一个随机的数字字母字符串

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

 

11 打乱一个数组顺序

var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411];
numbers = numbers.sort(function(){ return Math.random() - 0.5});

 

12 在String的原型对象上添加trim方法

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

 

13 将一个数组append到另一个数组上

var array1 = [12 , "foo" , {name: "Joe"} , -2458];

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

数组的concat可以实现两个数组的拼接,但它返回一个新的数组。这里是直接改变array1.

 

14 将arguments对象转成一个数组

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

 

15 判断是否为数字number

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

 

16 判断是否是数组

function isArray(obj){
    return Object.prototype.toString.call(obj) === '[object Array]' ;
}

17 获取数组中的最大值或最小值

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

 

18 清空数组

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

 

19 使用splice而不要使用delete删除数组中的元素,delete只是将相应的项变为undefined,并没有将其从数组中移除,也就不影响数组的长度。

 

20 数组的length不是一个只读属性,可以对其进行设置,若设置值小于原来的数组长度,则原来的数组会被截短,只保留length设置的个数;若设置值大于原来的数组长度,则原来的数组会被扩充,扩充的各元素为undefined。

Tagged: ,

Comments are closed.