第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

會否是參數(shù)作用域問題

會否是參數(shù)作用域問題

蕪湖不蕪 2019-02-15 18:12:12
當(dāng)前我有一個函數(shù):這個函數(shù)主要是在使用iview的Table組件進行自定義模版時寫的一個用來生成Select的方法,其中h函數(shù)是vue的createElement函數(shù),目前遇到的問題是:我在函數(shù)進入的地方進行了console可以打印出dataList對象(不為空),但是在數(shù)組里面的lambda函數(shù)參數(shù)dataList卻是為空。感覺像是變量作用域的問題,不知如何解決,期待大佬~//Select EleGene    function commonGenSelect(h,c,dataList){        //此處的dataList不為空        console.log(dataList[0].title)        return h("Select",{            props:{                name:'constraintColType'            }        },[            (h,c,dataList)=>{                //此處的dataList為空                console.log("commonGenCheckBox >>"+dataList)                let OptionArr = new Array();                dataList.forEach(colKV => {                    OptionArr.push(h("Option",{                        props:{                            label:colKV.title,                            value:colKV.val                        }                    }))                });                    return OptionArr;            }        ])    }
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經(jīng)驗 獲得超6個贊

(┬_┬),在胡亂摸索中把這問題給解決了,其實只是自己對lambda的理解不足及使用錯誤有關(guān)。問題中的函數(shù)參數(shù)的前兩個h、c分別是iview的Table組件自定義模版render時的參數(shù),我自定義了一個函數(shù),包含這兩個參數(shù),同時自己傳多一個數(shù)組。我在內(nèi)部準備使用這些參數(shù),本來這些參數(shù)的作用域已經(jīng)是整個函數(shù)commonGenSelect了,但是我在后續(xù)的代碼中使用了匿名函數(shù),同時異想天開的將這三個參數(shù)作為匿名函數(shù)的參數(shù)傳入,不過此時的匿名參數(shù)已經(jīng)相當(dāng)于定義了一個新的函數(shù)出來,且沒有傳入實參,導(dǎo)致在內(nèi)部代碼報錯undefinded。解決的方法有兩種:

一種是直接將匿名函數(shù)的參數(shù)直接去掉,在匿名函數(shù)代碼塊中使用的變量將是存在于commonGenSelect整個函數(shù)作用域內(nèi)的,此時這些變量就不會為空


()=>{

    let OptionArr = new Array();

    dataList.forEach(colKV => {

        OptionArr.push(h("Option",{

            props:{

                label:colKV.title,

                value:colKV.val

            }

        }))

    });    

    return OptionArr;

}

第二種方法是,匿名函數(shù)被定義成三個參數(shù)但是沒有被傳入實參,此時我們可以加多一個調(diào)用的步驟,在匿名函數(shù)后進行傳參及調(diào)用


((h,c,dataList)=>{

        let OptionArr = new Array();

        dataList.forEach(colKV => {

            OptionArr.push(h("Option",{

                props:{

                    label:colKV.title,

                    value:colKV.val

                }

            }))

        });    

        return OptionArr;

    })(h,c,dataList)

最后,這個問題也是讓我想到

匿名參數(shù)在定義的時候,要么掛鉤到對應(yīng)的已有函數(shù)中,如


render:(h,c)=>{}

此時其參數(shù)是被固定默認傳入的

要么在定義出自己的匿名參數(shù)后,記得后續(xù)進行傳參來調(diào)用,否則匿名函數(shù)的參數(shù)將是空的


((a,b)=>{console.log(a+b);})(1,3)


查看完整回答
反對 回復(fù) 2019-02-21
  • 1 回答
  • 0 關(guān)注
  • 379 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號