Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反转名称的JavaScript函数无法正常工作(学习JavaScript-O'Reilly的示例)_Javascript_Ecmascript 6_This_Nested Function - Fatal编程技术网

反转名称的JavaScript函数无法正常工作(学习JavaScript-O'Reilly的示例)

反转名称的JavaScript函数无法正常工作(学习JavaScript-O'Reilly的示例),javascript,ecmascript-6,this,nested-function,Javascript,Ecmascript 6,This,Nested Function,我正在通过Ethan Brown的学习JavaScript的书学习一些JavaScript,我偶然发现了一个示例,它的性能没有达到预期,我似乎无法找出错误是什么。我相信这是显而易见的,我只是在第二天学习这些东西,但这是令人沮丧的 代码所在的部分重点介绍如何使用this关键字,本示例旨在说明在嵌套函数中使用this关键字的正确方法 这是从书中摘取的密码,但我用我的名字代替了朱莉!: 请注意,本书重点介绍ES6,而不是ES5 预期产出: o、 迎面而来 莱纳德·斯曼·伊姆,奥利 实际产量: o、 迎

我正在通过Ethan Brown的学习JavaScript的书学习一些JavaScript,我偶然发现了一个示例,它的性能没有达到预期,我似乎无法找出错误是什么。我相信这是显而易见的,我只是在第二天学习这些东西,但这是令人沮丧的

代码所在的部分重点介绍如何使用this关键字,本示例旨在说明在嵌套函数中使用this关键字的正确方法

这是从书中摘取的密码,但我用我的名字代替了朱莉!:

请注意,本书重点介绍ES6,而不是ES5

预期产出:

o、 迎面而来

莱纳德·斯曼·伊姆,奥利

实际产量:

o、 迎面而来

我是伊曼·伊姆,奥利

这:

应该是:

for (let i = self.name.length - 1; i >= 0; i--) {
因为self指的是对象o。如果需要名称,则必须是self.name

编辑:您可以通过以下方式实现整个getReversedName函数:

return [...self.name].reverse().join(''); // ES6 spread operator
这:

应该是:

for (let i = self.name.length - 1; i >= 0; i--) {
因为self指的是对象o。如果需要名称,则必须是self.name

编辑:您可以通过以下方式实现整个getReversedName函数:

return [...self.name].reverse().join(''); // ES6 spread operator

旁注:字符串反转函数是次优的,因为它在每个循环中重新分配整个字符串,因为JavaScript字符串是不可变的。最好使用.split.reverse.join.Expected-您的期望基于什么?@AlexanderO'Mara您的建议比他们的代码好多少?键入:self.length->self.name。length@zerkms我会承认,现在总体上看起来确实更好了。一定是过去两年左右的一些变化。不过,除非您的数据很大,否则差异实际上是一个微观优化。旁注:字符串反转函数是次优的,因为它会在每个循环中重新分配整个字符串,因为JavaScript字符串是不可变的。最好使用.split.reverse.join.Expected-您的期望基于什么?@AlexanderO'Mara您的建议比他们的代码好多少?键入:self.length->self.name。length@zerkms我会承认,现在总体上看起来确实更好了。一定是过去两年左右的一些变化。除非你的数据很大,否则差异实际上是一个微观优化。哦,天哪,今天盯着屏幕看的时间太长了,看起来是这样的!谢谢,我会在9分钟内接受这个答案,StackOverflow不会允许我在那之前…没问题!很高兴为您提供帮助:后者es2015解决方案与迭代器是目前提供的其中唯一一个可以使用4字节字符的解决方案。哦,老兄,今天屏幕上的显示时间太长了!谢谢,我会在9分钟内接受这个答案,StackOverflow不会允许我在那之前…没问题!很高兴为您提供帮助:后一个带有迭代器的es2015解决方案是目前提供的解决方案中唯一一个可以处理4字节字符的解决方案。