作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过 Ethan Brown 的“学习 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
关于反转名称的 JavaScript 函数无法正常工作(来自 Learning JavaScript - O'Reilly 的示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36963148/
我是一名优秀的程序员,十分优秀!