Javascript中字符串的方括号

Javascript中字符串的方括号,javascript,nodes,ethereum,metamask,Javascript,Nodes,Ethereum,Metamask,我不明白为什么我需要在下面的“account”变量周围添加方括号,因为“accounts”变量构成一个字符串 export default { name: 'App', data () { return { web3: null, account: null, contractInstance: null } }, mounted () { web3Cont().then((res) => { this.web3 = res

我不明白为什么我需要在下面的“account”变量周围添加方括号,因为“accounts”变量构成一个字符串

 export default {
  name: 'App',
  data () {
   return {
    web3: null,
    account: null,
    contractInstance: null
   }
 },
 mounted () {
  web3Cont().then((res) => {
   this.web3 = res
   this.contractInstance = new this.web3.eth.Contract(contractAbi, contractAddress)
   this.web3.eth.getAccounts().then((accounts) => {
    [this.account] = accounts
  })
 }

从名称来看,我猜测
getAccounts
返回多个帐户,可能是一个数组(或者至少是某种类型的iterable)。如果没有
[]
,则将该数组分配给
此.account
。不过,对于
[]
,您使用的是解构,从数组/iterable中只挑选出第一个帐户

下面是一个简单的例子:

const accounts=[“a”、“b”、“c”];
设变量为1;
设变量2;
变量1=账户;
console.log(variable1的类型,variable1);//“对象”[“a”、“b”、“c”]
[变量2]=账户;

console.log(variable2的类型,variable2);//“string”“a”
这是否回答了您的问题?谢谢你。是的,我知道解构,但正如我在下面回答中的评论中所解释的,我不认为accounts变量可能是数组(尽管该变量是复数的,可能是因为遗留原因),因为它构成了当前登录到MetaMask的帐户(应该是唯一的)(打印accounts变量也会打印单个帐户)。“如果返回数组中的第一个帐户不是您期望的帐户,您应该通知用户!将来,accounts数组可能包含多个帐户。但是,数组中的第一个帐户将继续被视为用户的“选定”帐户。”感谢用户120242!我错过了。在看到它是什么之后,我有点惊讶它没有多个帐户。无论它是与钱包收藏、浏览器用户配置文件还是dApp收藏相关,通过默认值显式支持多个帐户都是有意义的。谢谢你t.J.Crowder。尽管如你所说,该功能是如果使用复数形式,我会在逻辑上认为每次应该登录一个帐户(在打印accounts变量时,我也会获得一个帐户)。也许,在某些情况下,可能会有多个帐户。