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

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

通過另一個函數(shù)添加新屬性而不修改現(xiàn)有對象結(jié)構(gòu)

通過另一個函數(shù)添加新屬性而不修改現(xiàn)有對象結(jié)構(gòu)

喵喵時光機(jī) 2023-08-05 20:48:56
我在這里做錯了什么?我在函數(shù)內(nèi)部有如下所示的對象function another(){        var obj.level1 = {            prop1 : 'some value 1',            props2: 'somevalue 2'            newProps : func() --> want new property with 1/ 2        }    }function func() { // using this func for specific scenarios        var setNewValue = '';        if(myConditionPassed){            setNewValue = 1; // i need this to be added in my above obj        } else {            setNewValue = 2;// or this to be added in my above obj        }    }但是當(dāng)變得console.log(obj.level1);未定義時預(yù)期的:obj{   level1: {            prop1 : 'some value 1',            props2: 'somevalue 2'            newProps : 1        }}想過不發(fā)布這個帖子,雖然它非常簡單,即使每天使用 JS,我也不明白我錯過了什么以及我做錯了什么。
查看完整描述

1 回答

?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗 獲得超7個贊

只能使用 var、let 和 const 創(chuàng)建對象(而不是屬性)

該語句未成功執(zhí)行:


var obj.level1 = {

    prop1 : 'some value 1',

    props2: 'somevalue 2'

}

我懷疑您沒有注意到它產(chǎn)生的錯誤。在 Windows 版 Chrome 上,我在控制臺中看到以下內(nèi)容:Uncaught SyntaxError: Unexpected token '.'。


由于該錯誤,當(dāng)您嘗試讀取obj.level1.


兩種解決方案

方案一:obj先創(chuàng)建,再設(shè)置其level1屬性。


var obj = {};

obj.level1 = {

  prop1 : 'some value 1',

  props2: 'somevalue 2'

}

選項 2. 創(chuàng)建obj并level1一起。


var obj = {

  level1: {

    prop1 : 'some value 1',

    props2: 'somevalue 2'

  }

};

在一個不相關(guān)的說明中,您的 newProps 函數(shù)格式錯誤

你已經(jīng)忘記return了allowHim。這是一個常見的錯誤,不用擔(dān)心!您已經(jīng)計算了值func()但沒有返回它,因此新屬性被正確報告為undefined!這就是您所需要的。


function func() { // using this func for specific scenarios

    var allowHim = '';

    if(myConditionPassed){

        allowHim = true; // i need this to be added in my above obj

    } else {

        allowHim = false;// or this to be added in my above obj

    }

    return allowHim

}

作為補(bǔ)充說明,我建議您創(chuàng)建allowHim 變量,如下所示:


let allowHim = null;

這有兩個理由是更可取的。首先,您將養(yǎng)成let盡可能使用變量的習(xí)慣,這使得變量盡可能本地化,從而減少錯誤。


其次,您將初始值設(shè)置為 null,而不是''。它不會影響代碼的工作方式,但它很有幫助,因為''是字符串的合理默認(rèn)值,而不是布爾值。當(dāng)您正在調(diào)試更復(fù)雜的程序時,如果您看到一個包含 的變量'',您可能會錯誤地懷疑它稍后應(yīng)該包含一個字符串值。相反,如果您看到它包含null,您將不會得到錯誤的提示。


以下是如何顯示問題以及如何修復(fù)它

您當(dāng)前版本的問題具有以下代碼:


var obj.level1 = {

    prop1 : 'some value 1',

    props2: 'somevalue 2'

    newProps : func() --> want new property with true/ false

}


function func() { // using this func for specific scenarios

    var allowHim = '';

    if(myConditionPassed){

        allowHim = true; // i need this to be added in my above obj

    } else {

        allowHim = false;// or this to be added in my above obj

    }

}

代碼中有4處錯誤。


故障1.它使用var在var obj.level1.


擺脫var. 想必您是obj在程序的早期創(chuàng)建的?所以我只是預(yù)先設(shè)置obj為 {}。如果您的程序之前已經(jīng)將其設(shè)置為某項,則無需執(zhí)行此操作。


故障2. 以下行缺少終端逗號。


props2: 'somevalue 2'

故障3.以下行有一條注釋,您沒有標(biāo)記為注釋。


newProps : func() --> want new property with true/ false

錯誤4. 的定義func不包含return 語句。


您在下面的評論中提到的返回語句的格式不正確。


這是一個有效的修訂版本。


var obj = {} 


obj.level1 = {  // DO NOT put a "var" on this line.

    prop1 : 'some value 1',

    props2: 'somevalue 2', // I have inserted the missing comma

    newProps : func() // If you want to comment, you need the "//" symbols

}


function func() { 

    var allowHim = null;

    if(1 + 1 === 2){

        allowHim = true; 

    } else {

        allowHim = false;

    }

    return allowHim; // Your original version was missing this.

}


console.log(obj.level1)

如果您使用代碼片段工具(“< >”圖標(biāo))插入代碼,您會立即發(fā)現(xiàn)錯誤 1、2 和 3

當(dāng)您手動輸入代碼時,會出現(xiàn)多個問題。首先,你留下了語法錯誤,回答者必須猜測解決方案。其次,您依賴于您自己正確傳達(dá)錯誤消息。

在您的情況下,您錯誤地傳達(dá)了錯誤消息。你的問題說了以下幾點:

but when doing console.log(obj.level1); getting undefined

因此我解釋了導(dǎo)致這種情況發(fā)生的原因。

但是,在花了一些時間嘗試提供幫助之后,我現(xiàn)在意識到您的錯誤消息不是這樣的,而是該屬性未定義 newProp,即

console.log(obj.level1) is getting undefined.

如果您給我們一個片段,這種混亂就可以避免,因為我們可以立即看到錯誤是什么,而不是依賴提問者對錯誤的可能不準(zhǔn)確的描述。



查看完整回答
反對 回復(fù) 2023-08-05
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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