繁体   English   中英

我可以访问函数变量吗?

[英]Can I access functions variables?

单击按钮时,我希望某些函数定义其变量,这可能吗?

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

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

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

单击按钮时,我希望某些函数定义其变量,这可能吗?

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

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

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

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


如何使函数x返回事件侦听器中定义的namelastname

您对“返回”一词的使用令人困惑,因为函数可以返回值,但您似乎实际上想要将值分配给变量。

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

您可以在click处理程序中重新定义x以设置函数的默认参数。 注意, "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>

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

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 事件,全局x var 将具有新值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM