我有以下代码:
$file_check_method_func = function($n) {
$n = absint($n);
if(1 !== $n) { $n = 0; }
return $n;
};
$valid['file_check_method'] = array_map($file_check_method_func, $input['file_check_method']);
Run Code Online (Sandbox Code Playgroud)
这适用于我的PHP 5.3.5安装,但当我在PHP 5.2.15安装上运行此代码时,我得到:
Parse error: syntax error, unexpected T_FUNCTION in /home/xxxx/public_html/xxxx/xxxxxxx/wp-content/plugins/wordpress-file-monitor-plus/classes/wpfmp.settings.class.php on line 220
Run Code Online (Sandbox Code Playgroud)
第220行是上述代码的第一行.
所以我的问题是,我的代码中是否写错了会出现此错误?如果不是因为PHP 5.2.15中的错误或不支持的功能?如果是,那么我如何编写上面的代码以免产生错误?
上面的代码是一个类中的函数.
var destURL = function () {
if (this.typeOfDash == 'edit') {
return '../../ajax/getParams.aspx';
}
else {
return 'DashCreator.aspx';
}
Run Code Online (Sandbox Code Playgroud)
}
我希望这会工作,但它只是将函数分配给变量...我希望得到返回值作为变量值...任何人?
我一直在阅读/编写一些基本的Javascript和JQuery代码,并注意到在我阅读的几乎每个教程中,都使用匿名函数而不是命名函数.
例如,类似于:
$('document').ready(function(){
alert("I am ready.");
});
Run Code Online (Sandbox Code Playgroud)
与:
function ready(){
alert("I am ready.");
}
$('document').ready(ready());
Run Code Online (Sandbox Code Playgroud)
不是第二个例子,更容易阅读/理解?现在,我意识到这些都是非常简单的例子,但我想说的是,我觉得匿名函数使代码看起来混乱而且难以理解.到处都有大括号和括号,你不能在其他任何地方使用这个功能,因为它是匿名的.
功能的全部要点是能够将代码组织到不同的模块中以使代码看起来更清晰,使调试更容易并避免冗余代码吗?
为什么有人会使用匿名函数而不是命名函数?他们的目的是什么?
我正在尝试ucfirst使用array_walk和匿名函数应用于数组中的单词.我想更改"原始"数组的值$fruits.由于我不能使用传递参考,你能推荐我做什么?
<?php
$fruits = array('apple', 'orange', 'banana', 'cherry');
array_walk($fruits, function($a) {
$fruits = ucfirst($a);
});
var_dump($fruits);
//results
array(4) {
[0] =>
string(5) "apple"
[1] =>
string(6) "orange"
[2] =>
string(6) "banana"
[3] =>
string(6) "cherry"
}
Run Code Online (Sandbox Code Playgroud) 一个简单的例子应该证明我的问题:
First I define a simple variable:
(def a '(["one" 1] ["two" 2] ["nine" 9]))
;; CASE 1: (This works correctly)
(take-while #(< (second %) 5) a)
Returns: (["one" 1] ["two" 2])
;; CASE 2: (This does not seem to work correctly)
;; The only difference is the '>' instead of '<'
(take-while #(> (second %) 5) a)
Returns: ()
Run Code Online (Sandbox Code Playgroud)
在我看来CASE 2应该返回(["9"9])?
有没有办法调试这个,看看我错过了什么?
谢谢!
当我JSLint这段代码时:
$(document).keydown(function(e){
if ($("#chaptersFunctionality").length !== 0) {
if (e.keyCode == '13')
return false;
if ($("#kelvin").val() === "" && $("#caleb").attr("title") === "Show all steps") {
switch(e.which){
case 39: if ((parseInt(currentAnchor)+1) < parseInt(maxi))
expandMe(++currentAnchor);
break;
case 37: if (currentAnchor > 0)
expandMe(currentAnchor-1);
break;
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
...我得到了很多警告,其中大部分都是我嘲笑的,但这个让我难过:" 匿名函数并不总是返回值 "
为什么这么说呢?事件处理程序不是匿名函数,是吗?并且它无论如何都没有返回任何价值,是吗?那么这意味着什么,以及[moll,pac]如果是什么呢?
我想将事件处理程序转换为jquery样式的单击事件,但它似乎不喜欢传递事件,也许是因为它不再是匿名函数了?
// variables
var faqOne = document.getElementById("faqOne");
var $hiddenOne = $(".faqOneHidden");
// javascript event handler works!
faqOne.addEventListener("click", function(e){
showFaqOne.showClickedFaq(e);
}, false);
// javascript event handle - doesnt work!
$("#faqOne").click(function(){
showFaqOne.showClickedFaq(e);
});
// constructor
function DisplayQFaqs(link, faq){
this.link = link;
this.faq = faq;
}
// method prototype
DisplayQFaqs.prototype.showClickedFaq = function(e){
var el = e.currentTarget;
if(el === this.link) {
this.faq.toggle("slow", function(){
});
}
};
// new DisplayQFaqs Objects
var showFaqOne = new DisplayQFaqs(faqOne,$hiddenOne);
Run Code Online (Sandbox Code Playgroud) 我以为我很聪明地找到了一种在ctor中调用aync方法的方法:
public AppStateModel(IBranchClient branchClient)
{
_branchClient = branchClient;
var loadBranch = new Action(async () =>
{
DataProviderReadResult<BranchDetailViewModel> result = await _branchClient.ReadOneItemAsync(AppSettings.BranchId, _initCts.Token);
});
loadBranch();
}
Run Code Online (Sandbox Code Playgroud)
但是动作的主体抛出一个异常,我用普通的方式记录并重新抛出throw;,但是这个ctor执行正常,我的其余代码继续运行,好像什么也没发生.为什么是这样?
我试图在Javascript中获取匿名函数之外的值.基本上,我希望这个函数返回4.我觉得有一个简单的修复,但我不确定.谢谢!
function a(){
var x = 1;
()=>{
x = 4;
}
return x;
}
Run Code Online (Sandbox Code Playgroud) 这是编写此代码的更好方法吗?这种方式看起来很复杂.我想example根据需要分配值anotherVariable.
var example = new Func<DateTime>((() =>
{
switch (anotherVariable)
{
case "Jesus birth": return new DateTime(0, 12, 24);
case "Second condition": return new DateTime(2017, 23, 11);
// etc
default: return DateTime.Now;
}
})).Invoke();
Run Code Online (Sandbox Code Playgroud) javascript ×4
jquery ×3
c# ×2
php ×2
.net ×1
arrays ×1
async-await ×1
asynchronous ×1
clojure ×1
constructor ×1
eventhandler ×1
events ×1
func ×1
handler ×1
jslint ×1
syntax-error ×1