String. trim()
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }
Date.format()
Date.prototype.format = function(format) { var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" : Math.floor((this.getMonth()+3)/3), //quarter "S" : this.getMilliseconds() //millisecond } if(/(y+)/.test(format)) format=format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o)if(new RegExp("("+ k +")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); return format; } alert((new Date()).format('yyyy-MM-dd'));
Arguments
function func(a,b,r){
alert( arguments.length);
}
func(9);//实际传入方法的参数个数1
alert( func.length);//方法的参数总数3
函数里头前面没var的变量或方法在函数执行后变成全局(上级作用域)的,有var的才是局部变量
例1:
function sayHello2() { sayAlert = function() { alert(123); } ; } sayHello2(); sayAlert();
例2:
function sayHello2() { var id="007";//函数内部有效 name="hello";//函数执行后升级为上级作用域的变量 } sayHello2(); alert(name);//hello alert(id);//报错:id未定义
闭包的例子
例1:
function genFuns() { var array=[]; for(var i=0;i<3;i++){ var fun=function(num){return function(){alert(num)}}(i);//执行结果 0 1 2 //var fun = function(){alert(i)};//执行结果 3 3 3 array.push(fun); } return array; } var sy = genFuns(); for(var j=0;j<sy.length;j++) sy[j]();
例2:(转自http://hi.baidu.com/xiaolei1982/blog/item/98d8a0ef75d444edce1b3eba.html)
在Javascript里,如果你声明了一个内嵌函数,局部变量将在函数返回后依然可访问。
function sayHello2(name) { var text = 'Hello ' + name; // local variable var sayAlert = function() { alert(text); } return sayAlert; } var sy = sayHello2('never-online'); sy();
例3:
function say667() { var num = 666; var sayAlert = function() { alert(num); } num++; return sayAlert; } var sy = say667(); sy(); //667
例4:
<script type="text/javascript"> function setupSomeGlobals() { // Local variable that ends up within closure var num = 666; // Store some references to functions as global variables gAlertNumber = function() { alert(num); } gIncreaseNumber = function() { num++; } gSetNumber = function(x) { num = x; } } </script> <button οnclick="setupSomeGlobals()">生成 - setupSomeGlobals()</button> <button οnclick="gAlertNumber()">输出值 - gAlertNumber()</button> <button οnclick="gIncreaseNumber()">增加 - gIncreaseNumber()</button> <button οnclick="gSetNumber(5)">赋值5 - gSetNumber(5)</button>
parseInt
对于parseInt("01")到parseInt("07");都能得到正确的结果,但如果是parseInt("08") 或parseInt("09")则返回0;
首先看parseInt语法:parseInt(string, radix);
其中string为要转换的字符串,radix为二进制,八进制,十六进制或十进制。
在默认不指定radix时,当以0x开关时,为十六进制;如果以0开关且第二位不为x,则让为是八进制,(因为八进制不能有8,9所以报错返回0)。
所以,在我们用时还是明确指定进位制,以防出错。
如我们平时都用十进制位,我们就 parseInt("08", 10);
js数组最大值max和最小值min
var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math.min.apply(null, a));//最小值