从另一个函数中读取值的正确方法是什么?

说我有这个function

function name(){ var first_name = "mike"; } 

我想将first_name的值传递给另一个函数 – 我知道你可以这样做:

 function name(){ var first_name = "mike"; getName(first_name); } 

但是,说我想访问它,而不是像这样传递

 function name(){ var first_name = "mike"; getName() } 

在getName中,如何从name()函数访问first_name?

 function getName(){ console.log(this.first_name) } 

在PHP中,我知道你可以用$ this-> first_name来做到这一点,这将如何在JavaScript中完成? 另外如果你可以调用JavaScript中的另一个函数,是否有一个正确的方法来做到这一点,如PHP $ this-> first_name()

先谢谢你

 function name(){ var first_name = "mike"; return first_name; } function getName(){ var get_name=name(); alert(get_name); } 

你不能从任何其他函数访问这个variables,除非你像纳迦的解决scheme那样显式地传递它,因为first_name是本地的,只有name才能访问它。 你可能想要使用原型。

 function Person(name) { this.first_name = name || 'Mike'; } Person.prototype = { getName: function() { return this.first_name; } }; var john = new Person('John'); console.log(john.getName()); //=> John 

有点顽皮,但这是你的问题的一个答案…

 var first_name = "mike"; function change_name(new_name) { first_name = new_name; } function get_name() { return first_name; } console.log(get_name()); 

我个人更喜欢这样的devise模式…

 var names = new function() { // The 'this' context may change within callbacks and such, // so this is one way to save it for later use var self = this; this.first_name = "mike"; this.change_name = function(new_name) { self.first_name = new_name; } this.get_name = function() { return self.first_name; } } console.log(names.first_name); console.log(names.get_name()); names.change_name("kevin"); console.log(names.first_name);