AppGallery Connect:快應(yīng)用如何避免讀取undefined變量的屬性導(dǎo)致報(bào)錯(cuò)

來(lái)源: 華為開(kāi)發(fā)者論壇
作者:Mayism
時(shí)間:2021-01-12
17042
這是 JS 開(kāi)發(fā)中常見(jiàn)的錯(cuò)誤。對(duì)一個(gè)值為 null 或 undefined 的變量取屬性就會(huì)報(bào)錯(cuò)。

pexels-pixabay-163064.jpg

現(xiàn)象描述

這是 JS 開(kāi)發(fā)中常見(jiàn)的錯(cuò)誤。對(duì)一個(gè)值為 null 或 undefined 的變量取屬性就會(huì)報(bào)錯(cuò)。例如:

<!-- a = {}; --> 

<text>{{ a.b.c }}</text>

<!-- Error: Cannot read property 'c' of undefined -->

解決方法

1、通過(guò)邏輯運(yùn)算的執(zhí)行順序來(lái)規(guī)避錯(cuò)誤。代碼如下:

app.ux代碼如下:

<text>{{ a && a.b && a.b.c }}</text>

2、 在 ViewModel 上增加函數(shù)方法

推薦方案 2,在 ViewModel 上建立一個(gè) checkEmpty 函數(shù)。示例代碼如下:

export default {

  checkEmpty(...args) {

    let ret

    if (args.length > 0) {

      ret = args.shift()

      let tmp

      while (ret && args.length > 0) {

        tmp = args.shift()

        ret = ret[tmp]

      }

    }

    return ret || false

  }

}

這樣,就可以方便的調(diào)用了。

<text>{{checkEmpty(a, 'b', 'c')}}</text>

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于華為開(kāi)發(fā)者論壇,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家