JavaScript 反转名称的函数无法正常工作(来自 Learning JavaScript - O'Reilly 的示例)
JavaScript Function That Reverses Name Not Working Correctly (example from Learning JavaScript - O'Reilly)
我正在通过 Ethan Brown 的 "Learning JavaScript" 书学习一些 JavaScript,我偶然发现了一个未按预期执行的示例,我似乎无法弄清楚是什么错误是。我敢肯定这是显而易见的事情,我只是在学习这些东西的第 2 天,但这令人沮丧!
代码所在的部分着重于使用 this
关键字,此示例应该显示在嵌套函数中使用 this
的正确方法。
这是代码(摘自书中,但我用的是我的名字而不是 "Julie"!):
注意本书关注的是 ES6,而不是 ES5
const o = {
name: "Daniel",
greetBackwards: function() {
const self = this;
function getReversedName() {
let nameBackwards = "";
for (let i = self.length - 1; i >= 0; i--) {
nameBackwards += self.name[i];
}
return nameBackwards;
}
return `${getReversedName()} si eman ym , olleH`;
},
};
预期输出:
o.greetBackwards();
"leinaD si eman ym , olleH"
实际输出:
o.greetBackwards();
" si eman ym , olleH"
这个:
for (let i = self.length - 1; i >= 0; i--) {
应该是:
for (let i = self.name.length - 1; i >= 0; i--) {
因为self
引用对象o
。如果你想要名字,它必须是 self.name
.
编辑:您可以通过以下方式实现整个getReversedName
功能:
return [...self.name].reverse().join(''); // ES6 spread operator
我正在通过 Ethan Brown 的 "Learning JavaScript" 书学习一些 JavaScript,我偶然发现了一个未按预期执行的示例,我似乎无法弄清楚是什么错误是。我敢肯定这是显而易见的事情,我只是在学习这些东西的第 2 天,但这令人沮丧!
代码所在的部分着重于使用 this
关键字,此示例应该显示在嵌套函数中使用 this
的正确方法。
这是代码(摘自书中,但我用的是我的名字而不是 "Julie"!):
注意本书关注的是 ES6,而不是 ES5
const o = {
name: "Daniel",
greetBackwards: function() {
const self = this;
function getReversedName() {
let nameBackwards = "";
for (let i = self.length - 1; i >= 0; i--) {
nameBackwards += self.name[i];
}
return nameBackwards;
}
return `${getReversedName()} si eman ym , olleH`;
},
};
预期输出:
o.greetBackwards();
"leinaD si eman ym , olleH"
实际输出:
o.greetBackwards();
" si eman ym , olleH"
这个:
for (let i = self.length - 1; i >= 0; i--) {
应该是:
for (let i = self.name.length - 1; i >= 0; i--) {
因为self
引用对象o
。如果你想要名字,它必须是 self.name
.
编辑:您可以通过以下方式实现整个getReversedName
功能:
return [...self.name].reverse().join(''); // ES6 spread operator