[英]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 时会出现错误。 在第二种情况下,没有这样的错误。 请指导。
我看起来,您正在使用相同的变量( open
, close
)。 这不可能通过在同一个块中使用const
或let
再次声明它们。
与var
相反,声明被提升到代码或 function 的开头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.