gpt4 book ai didi

javascript - 访问值的语法 obj.obj.key 和 obj[obj].key 有什么区别?

转载 作者:行者123 更新时间:2023-11-29 19:43:16 27 4
gpt4 key购买 nike

似乎在 for 循环的上下文中,关于对象的语法发生了变化。

为什么 console.log() 不应该运行相同的东西?第一个按预期运行,第二个呈现错误“steve is not defined”:

var friends = {
steve: {firstName: "Steve", lastName: "Jobs",
number: "none"
}
};

friends.bill = {
firstName: "Bill",
lastName: "Gates",
number: "Hidden"
};

console.log(friends.steve.firstName)
console.log(friends[steve].firstName)

通常,我不希望使用格式 obj[obj].key,但在下面的带有 for 循环的示例中,语法 obj.obj.key 不起作用,但相反 obj[ obj].key 做:

var friends = {
};

friends.steve = {
firstName: "Steve",
lastName: "Jobs",
number: "none",
};

friends.bill = {
firstName: "Bill",
lastName: "Gates",
number: 'Hidden',
};

var search = function (name) {
for (var person in friends) {
if (friends[person].firstName === name) {
console.log(friends[person])
}
}
};

search("Steve")

是什么导致这两种语法在这些上下文中表现不同?

谢谢!

最佳答案

friends.steve

是另一种写法friends['steve']

不同于

friends[steve]

第一个是字符串'steve',第二个是变量steve,可以是'bob' “史蒂夫”1 或其他任何内容。


示例:

var obj = {steve:1, bob:2};
var steve = 'bob';

console.log(obj.steve); // 1
console.log(obj['steve']); // also 1
console.log(obj[steve]); // 2

或等效地,

var obj = {steve:1, bob:2};

console.log(obj.steve); // 1
console.log(obj['steve']); // also 1
console.log(obj['bob']); // 2

关于javascript - 访问值的语法 obj.obj.key 和 obj[obj].key 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com