ECMAScript學習筆記

1. ECMAScript不存在塊級做用域,所以在循環內部定義的變量,在循環外也是能夠訪問的
  eg:
    var count =10;
    fpr(var i=0; i<count; i++){
      alert(i);
    }
    alert(i); //10數組

2. ECMAScript的函數能夠定義任意個參數,傳入任意個參數二者能夠不對應;
在調用函數時傳入的參數會存放在arguments[]中,定義函數時寫的參數至關於爲arguments[]中對應的參數起別名
arguments[]的長度由調用函數時傳入的參數決定
在二者存在對應關係時,修改任意一個的值,另外一個也會同時改變函數

  eg:
    function showArguments(num1,num2,num3){
      num2 = 10;
      arguments[2] = 100;
      console.log(num1+' '+num2+' '+num3+': '+arguments[0]+' '+arguments[1]+' '+arguments[2]);
    }對象

    showArguments(); //"undefined 10 undefined: undefined undefined 100"
    showArguments(1); //"1 10 undefined: 1 undefined 100"
    showArguments(1,1); //"1 10 undefined: 1 10 100"
    showArguments(1,1,1); //"1 10 100: 1 10 100"
    showArguments(1,1,1,1); //"1 10 100: 1 10 100"ip

3. ECMAScript的全部函數的參數都是按值傳遞的,會把調用時參數的值付給函數內部的參數,
  (ps:當參數是基本數據類型時,不關函數如何操做都不會改變外部參數的值;
    可是當參數是引用數據類型時,由於外部參數和內部參數指向同一內存區域,
    在函數內改變對象屬後,在其餘地方訪問該對象的也是改變後的,
    不過一樣的在函數內改變參數的值指向其餘地址,依然不會影響外部參數的值)
  eg:
    var obj = new Object();內存

    function setName(obj){
      obj.name = "Regis";
    }ci

    function setTitle(obj){
      obj.title = "king of lucis";
      obj = new Object();
      obj.title = "nilheim";
    }
    setName(obj);
    setTitle(obj);
    console.log(obj.name); //"Regis"
    console.log(obj.title) //"king of lucis"作用域

4.ECMAScript中Array類型的迭代方法
  a.every(function(item,index,array){}):對數組中的每一項運行給定函數,若是函數對每一項都返回true,則返回true。
  b.some(function(item,index,array){}):對數組中的每一項運行給定函數,若是該函數對任一項返回true,則返回true.
  c.filter(function(item,index,array){}):對數組中的每一項運行給定函數,返回該函數返回true的項組成的數組.
  d.forEach(function(item,index,array){}):對數組中的每一項運行給定的函數。該方法沒有返回值
  e.map(function(item,index,array){}):對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組.it

相關文章
相關標籤/搜索