js雑多


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')); 
 
Agments
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 onclick="setupSomeGlobals()">   - setupSomeGlobals()</button> 
<button onclick="gAlertNumber()">    - gAlertNumber()</button> 
<button onclick="gIncreaseNumber()">   - gIncreaseNumber()</button> 
<button onclick="gSetNumber(5)">  5 - gSetNumber(5)</button>
 
 
parseInt
ParseInt(“01”)に対してパーrseInt(“07”)に;いずれも正しい結果が得られますが、ParseInt(「08」)またはParseInt(「09」)であれば0に戻ります.まずPArseInt文法を見ます.PArseInt(string、radix)ここでstringは変換する文字列で、radixはバイナリ、8進数、16進数または10進数です.デフォルトではradixが指定されていない場合、0 xスイッチで16進数となります.0スイッチで、2番目がxでない場合は、8進数とさせます.だから、私たちは間違えないように、进位制を明確に指定します.私達が普段10進数位を使うなら、パーパーネット(「08」、10)にします.