我玩了一下 php 的 array_map 函数,并考虑将它与命名参数一起使用,因为参数顺序总是让我恼火。(这些函数没有做任何有用的事情。只是需要一些东西来测试。)
到目前为止一切顺利,这是按预期工作的:
$testArray = [
'a' => [],
'b' => [1, 2, 3],
];
$result = array_map(array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr);
Run Code Online (Sandbox Code Playgroud)
(即使我需要一段时间来弄清楚数组参数的名称,正如array1德国文档中所记录的那样。但这是一件事情,我一有时间就会研究它。)
但是后来我尝试使用更多参数调用该函数。
所以,我的第一次尝试:
array_map(array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr, []);
Run Code Online (Sandbox Code Playgroud)
致命错误:不能在命名参数后使用位置参数
我了解到我不能在命名参数之后传递位置参数。
然后反过来:
array_map([], array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr);
Run Code Online (Sandbox Code Playgroud)
致命错误:未捕获错误:命名参数 $callback 覆盖了之前的参数
好的。它将第一个参数作为第一个位置参数并且很困惑,因为我覆盖了它。
我开始谷歌搜索。好的,未知的命名参数被传递给可变参数。让我们试试看:
array_map(array: $testArray, callback: …Run Code Online (Sandbox Code Playgroud) addLBEvent : function()
{
var amount = this.imageList.length;
for(var i = 0;i < amount;i++)
{
if(this.imageList[i].addEventListener)
{
this.imageList[i].addEventListener("click",this.startLB,false);
}
/*
IE<9-part
*/
}
},
startLB : function(src)
{
}
Run Code Online (Sandbox Code Playgroud)
我想知道哪个元素触发了该事件。如果我在 HTML 代码中执行此操作,我会编写类似的内容onlick="startLB(this.src)"。我怎样才能做这样的事情addEventListener?我已经尝试过 `addEventListener("click","myobjectname.startLB(this.src)" 但它不起作用。
抱歉我的英语不好