js常用小技巧
下面是js 的常用小技巧,持续更新中
1,js跳出each循环
在each 循环中 直接退出不执行下面的for循环中的东西 ,return false;
2,函数写法
在Javascript中定义一个函数,有两种写法:
function foo() { }
和
var foo = function () { }
两种写法完全等价。但是在解析的时候,前一种写法会被解析器自动提升到代码的头部,因此违背了函数应该先定义后使用的要求,所以建议定义函数时,全部采用后一种写法。
3,如何才能求出一个数组中的最大值呢
哈哈遍历循环这是大家首先想到的,代码如下:
function getMaxNum(arr){
maxNum=0;
for(var i=0;i<arr.length;i++){
maxNum=Math.max(maxNum,arr[i]);
}
return maxNum;
}
直接调用就可以了,
当然还有下面的一个方法,直接上代码啦
Math.max.apply(null, [1,23,3]);
结果呢当然是23,自己试试,为什么不用Math.max这个函数呢,Math.max(1,23,3) 可以直接输出23,但是Math.max([1,23,2])输出的结果却是NAN,也就是说Math.max不能带数组,所以着了巧用了apply的一个小特性,
4,Map的一些小用法(http://msdn.microsoft.com/zh-cn/library/ie/ff679976(v=vs.94).aspx)
虽然MDN是个好东西,感觉msdn也不赖啊
对数组的每个元素调用定义的回调函数并返回包含结果的数组
现实中咱们会经常遇到这样的问题,比如说双十一到了,tm的东西都要打折,就是说所有的东西都半价,想想怎么实现呢,最完美的实现方法应该是操作数据库,但是比如说这些数据都保存在一个数组中怎么办呢,哈哈,这个是假设啊,想想几十亿调数据放在一个数组中得由多大呢,我们下面就帮tm的工程师实现下面的功能
function getProductHalfPrice(price){
var halfprice=price/2;
return halfprice;
}
var price=[12,34,45,67];
price.map(getProductHalfPrice)
这样商品全部打半价了。
5,break 和continue的常用方法
看下面的例子,你知道结果是什么吗?
function whatDoesItDo(){ var values = []; myBlock: { values.push('1'); values.push('2'); break myBlock; values.push('3'); } values.push('4'); return values.join(','); }
结果是[1,2,4],为什么呢,下面我们就来看看break的一些用法:
用法一:在循环中终止这个循环,直接跳出循环,这个循环不再执行,比如说
var num=0;
var numB=[1,2,3,4,5,6,7,8,9];
for(var i=1;i<numB.length;i++){
if(i%4==0){break;}
num++;
}
num结果是3,在循环执行到i=4时不执行了,也就是num只被执行了3次
用法二:通过标签引用直接可以跳出js相关的代码块:
continue 语句(带有或不带标签引用)只能用在循环中。
break 语句(不带标签引用),只能用在循环或 switch 中($.each(arr,function(index,value){})要跳出这个函数直接用return false就好了,break 用不了的)
通过标签引用,break 语句可用于跳出任何 JavaScript 代码块:
这就是可以解释刚开始的小例子了,下面再给大家看看一个break标签的小例子:
car=[1,2,3,4];b=[];
list:{b.push(car[0]);b.push(car[1]);break list;b.push(car[2]);b.push(car[3])}
break 将直接跳出list这个标签下面的语句都不在执行