函數(shù)基礎(chǔ)知識

無意間看到了之前的筆記,順手在簡書上保存一下

函數(shù)

函數(shù)

將實(shí)現(xiàn)某一特定功能的代碼段集合起來,使其能夠重復(fù)使用

函數(shù)的聲明

  • 基本語法
  • function 名字([參數(shù)1],[參數(shù)2]){
    * 函數(shù)體
    * [return 返回值]
    }
  • 字面量方式(匿名函數(shù))
  • var 變量名=function(){
    }
  • 以對象的形式來聲明

運(yùn)行函數(shù)

函數(shù)名 table()

變量名 aa()

自調(diào)用 (fn)()

事件

參數(shù)

rest參數(shù)

函數(shù)重載

同一個(gè)函數(shù)因?yàn)閰?shù)類型或數(shù)量的不同,可以對應(yīng)多個(gè)函數(shù)的實(shí)現(xiàn)每種實(shí)現(xiàn)對應(yīng)一個(gè)函數(shù)體

函數(shù)返回值

return

返回值默認(rèn) undefined
返回值是任意數(shù)據(jù)類型 只能返回一個(gè)值

判斷是否是一個(gè)數(shù)組

aa instanceof Array

回調(diào)函數(shù)

在一個(gè)函數(shù)的名字當(dāng)做另一個(gè)函數(shù)的參數(shù),當(dāng)調(diào)用這個(gè)參數(shù)的時(shí)候,這個(gè)函數(shù)就是回調(diào)函數(shù)

箭頭函數(shù)

var bb= ele => ele
var 變量=參數(shù)=》返回值

代碼運(yùn)行環(huán)境

  1. 宿主環(huán)境
  2. 運(yùn)行環(huán)境
    • 全局環(huán)境
    • 局部環(huán)境 函數(shù)環(huán)境

作用域(根據(jù)運(yùn)行環(huán)境劃分)

  • 全局作用域

  • 函數(shù)作用域

      var a=1
      function aaa(){
          console.log(a)//輸出1
           a=2
          console.log(a)//輸出2
          function bbb(){
              console.log(a)//輸出undefined
               var a=3
              console.log(a)//輸出3
          }
          bbb()
      }
      aaa()
      console.log(a)//輸出2
    

let

  • 塊級作用域
    • let 作用域在{}內(nèi) console調(diào)用只能在 let之后 之前會(huì)報(bào)錯(cuò)

let使用

同var

注意

  • 不能夠重復(fù)定義
  • 作用范圍
  • 嵌套
  • 沒有預(yù)解析,不存在變量提升,只能先聲明后調(diào)用
  • 暫時(shí)性死去 tdz
  • 形參不能用let重新聲明

不合理

  • for循環(huán)下標(biāo) i會(huì)泄露
  • 變量不提升
  • let 記錄當(dāng)前循環(huán)下標(biāo)

var arr=[];
for (let i = 0; i < 5; i++) {
        arr[i]=function (){
            console.log(i)
        }
    }
arr[3]()

動(dòng)畫函數(shù) 案例

animate(box,{width:400,height:400,left:300},function(){
    box.style.background='green'
})

animate(box,{width:400,height:400,left:300},function(){
    animate(box,{left:100})
})

function animate(obj,attr,callback){
    // 對象,對象的屬性和值 json格式 ,回調(diào)函數(shù)
    let t=setInterval(move,200);
        function move(){
            for(let i in attr){
                let currentV=parseInt(getComputedStyle(obj,null)[i])+10;
                // 獲取當(dāng)前obj的長寬屬性
                if(currentV>=attr[i]){
                    // 如果實(shí)際尺寸達(dá)到要求,
                     currentV=attr[i];
                    // 讓當(dāng)前的值等于要求尺寸
                    clearInterval(t);
                    // 就清除時(shí)間函數(shù)
                    if(callback){
                        // 回調(diào)函數(shù)
                        callback.call()
                    }
                }
                obj.style[i]=currentV+'px';
            }               
        }
    
    }

輪播圖雙下標(biāo)思路

  1. 狀態(tài)初始化
  2. now next
  3. 排好位置 now在當(dāng)前窗口,next位置放在右邊,left值為width
  4. 開始動(dòng)畫
  5. now left:-width
  6. next left:0;
  7. 更新 now=next;

獲取樣式

getComputedStyle(box,null).width

正則

運(yùn)用正則在字符串上分裝一個(gè)去空函數(shù),

var str="  ab3'4Rc3Yd4d5de8f5dg"

   String.prototype.trims=function (type='l') {
        let reg;
        if(type=='l'){
            reg=/^\s+/;
        }else if(type=='r'){
            reg=/\s+$/;
        }else if(type=='a'){
            reg=/^\s+|\s+$/g;
        }
        return this.replace(reg,'');
    }

console.log(str.length)
let  ss=str.trims('l');
console.log(ss.length)

()

作用與用法:

  • 分組,返回會(huì)多一個(gè)下標(biāo)
  • 優(yōu)先級,單獨(dú)處理,添加量詞等

反向引用

常用于匹配字符串前后一致

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容