我可以访问函数变量吗?

时间:2017-09-30 14:28:55

标签: javascript variables

点击按钮我想要一些函数来定义它的变量,这可能吗?

button.addEventListener("click", function(){
   x.name = "john";
   x.lastname = "doe";
});

function x(){
   name = "";
   lastname = "";
} 

如何使函数x返回在事件监听器中定义的姓名和姓氏?

3 个答案:

答案 0 :(得分:2)

  

点击按钮我想要一些功能来定义变量,这可能吗?

函数的工作原理是为函数定义参数,然后使用函数的参数填充这些参数的值。这有效地使用您提供的参数值在函数范围内创建变量。

button.addEventListener("click", function(){
   x("john", "doe");
});

function x(name="", lastname=""){
  console.log(name, lastname);
} 

在这里,我还将参数的默认值添加为等于emtpy字符串,以防万一发送的参数不足。

  

如何在事件监听器中定义函数x返回namelastname

您使用“return”这个词令人困惑,因为函数可以返回值,但您似乎确实想要将值赋给变量。

如果您确实想要返回相同的值,您可以使用带有对象的return语句来返回相同的值,但我认为这不是您所追求的。

答案 1 :(得分:1)

您可以在x处理程序中重新定义click以设置该函数的默认参数。请注意,"name"window的属性,已将调整后的标识符调整为_name

const button = document.querySelector("button");

button.addEventListener("click", function() {

  x = function x(_name = "john", lastname = "doe") {
    console.log(_name, lastname)
  }
  
  x()
});

function x(_name, lastname) {
  console.log(_name, lastname)
}
<button>click</button>

答案 2 :(得分:0)

写这样的东西意味着将在点击事件上调用匿名函数

button.addEventListener("click", function(){
   x.name = "john";
   x.lastname = "doe";
});

与写作相同

function onClickListener(){
   x.name = "john";
   x.lastname = "doe";
}

button.addEventListener("click", onClickListener);

但是没有任何东西会从onClickListener函数读取响应,因此不能从函数返回。你可以这样做

var x = {};
function onClickListener(){
   x.name = "john";
   x.lastname = "doe";
}
button.addEventListener("click", onClickListener);

这是使用全局变量的丑陋代码,但它应该有效。一旦cick事件被calld,全局 x var将具有新值