js基礎練練手(二)

  • 不定項選擇題:

    	以下能對一維數組 a 進行正確初始化的語句是()
    	A. int a[10]={0, 0, 0, 0, 0};
    	B.int a[10]={  };
    	C.int a[]={0};
    	D.int a[10]={10*a};
    

    解答:

    	數組的初始化:
    	1、a[10] = {1,2,3};//隨後元素補零
    	2、a[] = {1,2}//編譯器自動計算元素個數,相當於a[2] = {1,2};
    	3、a[10] = {}//編譯器自動將所有元素置零
    
  • apply,call,bind的用法和區別(方法劫持)

    用途:手動改變this的指向

    區別:1.apply和call會使當前函數立即執行,bind會返回一個函數,後續需要時再調用

    1. call是apply的語法糖,只有傳的參數不同,call中要傳多個任意參數,apply只可以直接傳數組或者類數組

    2. bind是爲函數綁定一個this上下文

    規則:

       fn.apply(上下文環境,執行所需數組)
      
       fn.call(上下文環境,執行所需單個參數)
    
       fn.bind(上下文環境)
    

    ps:如果上下文的值爲null,則使用全局對象代替,相當於沒傳上下文還用以前的

    apply可以將一個數組轉換爲一個參數列表([p1,p2,p3]轉換爲p1,p2,p3)

     var arr=[1,2,3,4]
    
      console.log (Math.max.apply(null,arr))//4
    

    Math.max()只能傳數字,可以使用apply將數組轉爲一個一個參數傳入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章