Javascript中字符串的方括号
我不明白为什么我需要在下面的“account”变量周围添加方括号,因为“accounts”变量构成一个字符串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
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变量时,我也会获得一个帐户)。也许,在某些情况下,可能会有多个帐户。