0

当我执行以下JavaScript代码时,我得到了undefined

var ns=new String('hello world');
String.prototype.capitalAll=function(){
                                 this.toUpperCase()
                                       };
alert(ns.capitalAll()); // undefined

但是,当我添加时return,它会返回一个值

var ns=new String('hello world');
String.prototype.capitalAll=function(){
                                 return this.toUpperCase() // added return
                                       };
alert(ns.capitalAll()); // HELLO WORLD

为什么return在这里和每个函数的末尾都需要。我已经看到return在许多javascript框架中使用。

4

3 回答 3

1

否则您将如何从函数调用中返回数据?

像这样的函数Array.prototype.shift()是变革性的,因为它们修改了数组。在内部,他们会做类似的事情this[this.length] = newvalue并以某种方式实际修改this

但是大多数函数都不是变革性的,它们会返回结果。

于 2013-03-01T17:59:43.240 回答
0

return允许您定义函数在调用时传回的内容。

它不需要有返回值,你可以有一个什么都不返回的函数,它只是修改其他变量或打印一些东西然后继续。

undefined当您没有明确指定要返回的另一个值时返回

于 2013-03-01T18:01:38.797 回答
0

toUpperCase 的作用:

问题是 toUpperCase 首先没有修改“this”。那是一个返回值的函数。

一些方法会修改它们被调用的对象(它们会修改“this”)。在这些情况下,您可以像拥有它一样编写函数。但是,在这种情况下,您需要使用“return”值。

于 2013-03-01T18:26:44.140 回答