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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 BeforeEach 中設(shè)置 this.variable 時(shí),無(wú)法設(shè)置未定義的屬性“變量”

在 BeforeEach 中設(shè)置 this.variable 時(shí),無(wú)法設(shè)置未定義的屬性“變量”

牛魔王的故事 2022-06-09 11:12:07
我是 Javascript 的新手。我有以下代碼完全按照https://stackoverflow.com/a/58785118  describe('tests', () => {    beforeEach(async () =>      Promise.resolve('foo').then(result => {        this.dom = result;      })    );    it('works', () => {      console.log(this.dom); // => foo    });  });運(yùn)行測(cè)試時(shí),它抱怨1) tests       "before each" hook for "works":     TypeError: Cannot set property 'dom' of undefined我錯(cuò)過(guò)了什么嗎?
查看完整描述

2 回答

?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

最簡(jiǎn)單的方法是刪除使用this并在describe()回調(diào)范圍內(nèi)聲明一個(gè)變量:


  describe('tests', () => {

    let dom;

    beforeEach(async () =>

      Promise.resolve('foo').then(result => {

        dom = result;

      })

    );


    it('works', () => {

      console.log(dom); // => foo

    });

  });


查看完整回答
反對(duì) 回復(fù) 2022-06-09
?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊

您在承諾和測(cè)試回調(diào)函數(shù)中使用箭頭函數(shù)。thenit

在箭頭函數(shù)之前,每個(gè)新函數(shù)都根據(jù)函數(shù)的調(diào)用方式定義了自己的 this 值:

  • 在構(gòu)造函數(shù)的情況下是一個(gè)新對(duì)象。

  • 在嚴(yán)格模式函數(shù)調(diào)用中未定義。

  • 如果函數(shù)被稱為“對(duì)象方法”,則為基礎(chǔ)對(duì)象。

所以你的代碼的問(wèn)題是在測(cè)試的回調(diào)箭頭函數(shù)this的范圍內(nèi)是指describe塊的父范圍。

箭頭函數(shù)沒有自己的this. 使用封閉詞法范圍的 this 值;箭頭函數(shù)遵循正常的變量查找規(guī)則。因此,在搜索當(dāng)前范圍內(nèi)不存在的 this 時(shí),箭頭函數(shù)最終會(huì)從其封閉范圍中找到 this。

作為一種選擇,您可以在塊的父范圍內(nèi)定義變量并在回調(diào)describe中使用它。beforeAllit


查看完整回答
反對(duì) 回復(fù) 2022-06-09
  • 2 回答
  • 0 關(guān)注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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