如何在点击后将函数返回值赋给变量以供以后在javascript中使用?

时间:2018-05-14 23:55:39

标签: javascript

所以,我想要的是将函数返回值保存在一个变量上供以后使用,例如,只是为了保存它,但是在点击之后,就像在一个按钮上说的那样。例如,我们有:

let x = 3;    
function foo(){
        let z = 5;
        z = x + 3;
        return z;
    }

现在,如果我写:

let hold = foo();

它将保留返回值,但我希望将其保存在" hold"点击后,使用以下内容:

document.getElementById("empty_field").onclick = function() {foo()};

此处,单击调用该函数,但它不会将返回值保存在任何位置。如何将其保存在变量上?

1 个答案:

答案 0 :(得分:0)

简短回答:你不能

详尽答案:您可以在设置hold值之前简单地声明let x = 3; let hold; //variable is declared here so the click function has access to it. function foo(){ let z = 5; z = x + 3; return z; } document.getElementById("empty_field").onclick = function() { hold = foo() }; ,从而利用范围概念。这就是它的样子。

hold

更长的答案:您可以在声明变量的范围内的任何位置访问或修改hold。让我们添加另一个函数,我们再次修改let x = 3; let hold; //variable is declared here so the click function has access to it. function foo(){ let z = 5; z = x + 3; return z; } document.getElementById("empty_field").onclick = function() { hold = foo() }; document.getElementById("increment").onclick = function(){ hold++; //this the same as hold = hold + 1 }

hold

这也是有效的,因为这些单击函数是在定义function myConstructor(){ //initialize this.hold = 0 this.foo = function(x){ let z = 5; z = x + 3; this.hold = z; } this.increment = function(){ this.hold++; } } let x = 3; let myObj = new myConstructor() //I know my naming sucks just bear with me lol document.getElementById("empty_field").onclick = function() { myObj.foo(x) //x is still available since it was declared globally console.log(myObj.hold); }; document.getElementById("increment").onclick = function(){ myObj.increment(); console.log(myObj.hold); } 的同一范围内定义的。避免使用全局范围的变量是很好的。因此,您可以考虑使用构造函数,只是将函数之间的对象作为参数传递,如此...

string id = {id};
State state = State.observed;
HttpWebResponse response = proxyClient.ChangeState(id, state);
if (response.StatusCode != HttpStatusCode.OK)
{
    // handling error
}

无论如何,这是它的长短。与往常一样,有很多种做事方式,并不是绝对正确的方法。我只是认为了解一些选项可能会有所帮助。有关构造函数的更多内容可以在这里完成:https://www.w3schools.com/js/js_object_constructors.asp