繁体   English   中英

JavaScript object 解构中的变量声明错误和混淆

[英]Variable declaration error and confusion in JavaScript object destructuring

我有一家餐厅 object 有嵌套对象

const restaurant = {
  name1: 'Classico Italiano',
  location1: 'Via Angelo Tavanti 23, Firenze, Italy',
  categories: ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'],
  starterMenu: ['Focaccia', 'Bruschetta', 'Garlic Bread', 'Caprese Salad'],
  mainMenu: ['Pizza', 'Pasta', 'Risotto'],

  typeofManpower,
  parcelAvailable,

  openingHours: {
    thu: {
      open: 12,
      close: 22,
    },
    fri: {
      open: 11,
      close: 23,
    },
    sat: {
      open: 0, // Open 24 hours
      close: 24,
    },
  },
}

以下是我展示了一些 object 解构代码的代码。

const {openingHours:{sat:{open:satOpen,close:satClose}}}=restaurant;
console.log(satOpen,satClose);

const {fri:{open:friOpen,close:friClose}}=restaurant.openingHours;
console.log(friOpen,friClose);

const {open:thuOpen,close:thuClose}=restaurant.openingHours.thu;
console.log(thuOpen,thuClose);

我曾尝试在 RHS 上进行链接。 当我从 LHS 中删除 const 时,它给出了未声明变量 satOpen/friopen/thuOpen 的错误。

但是,我还有另一个 object 有 2 支足球队,并且有嵌套的 object '赔率' 与属性

    const game = {
    team1: 'Bayern Munich',
    team2: 'Borrussia Dortmund',
    players: [
    ['Neuer','Pavard','Martinez','Alaba','Davies','Kimmich','Goretzka','Coman',    'Muller','Gnarby','Lewandowski',],
['Burki','Schulz','Hummels','Akanji','Hakimi','Weigl','Witsel','Hazard','Brandt','Sancho','Gotze',],
    ],
    score: '4:0',
    scored: ['Lewandowski', 'Gnarby', 'Lewandowski',
    'Hummels'],
    date: 'Nov 9th, 2037',
    odds: {
    team1: 1.33,
    x: 3.25,
    team2: 6.5,
    },
    printGoals: function(...playerNames){
        console.log(playerNames.length);
        for(let i in playerNames)
            console.log(playerNames[i]);

    
    }
};

我尝试过以下代码进行解构。 但是,即使 LHS 上没有 const/let,此代码也可以工作。

({team1:group1,x:draw,team2:group1} = game.odds);

因此,在第一种情况下,当变量声明中未使用 const/let 时会出现错误。 在第二种情况下,没有这样的错误。 请指导。

我看起来,您正在使用相同的变量( openclose )。 这不可能通过在同一个块中使用constlet再次声明它们。

var相反,声明被提升到代码或 function 的开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM