在jQuery lambda functions,用户询问关于JQuery的调试lambda表达式。我搜索很多网站,我无法找到JQuery的lambda表达式的例子。有谁知道这是可能的,如果是这样我在哪里可以找到一些例子?
λ表达式被使用(除其他外)作为简写于指定anonymous functions(也称为匿名委托或匿名的方法)。也就是说,指针功能您在即时定义。
看到这个共同的JQuery Ajax的例子:
$.ajax({
url: "test.html",
context: document.body,
success: function(){
$(this).addClass("done");
} });
成功参数上使用即时功能的定义和指针JavaScript的。所以,是的,有一个在JavaScript中的匿名函数kindof lambda语法。其实,这是非常相似的VB.NET's lambda syntax,非常有力地同时用于表达式树和匿名函数:
Dim newNinjaList = NinjaList.Where(Function(n) n.primaryWeapon = "dagger")
所以,你可以说有一个在JQuery的拉姆达语法,虽然很多人会认为这是不雅。
如果你的意思是lambda表达式来指定expression trees,那么答案很简单:没有,JQuery的不使用任何类型的lambda语法为表达式树。
JavaScript并没有真正有lambda表达式,因为你必须明确地返回一个值。像Ruby一些语言自动返回的最后一条语句的值,但在JavaScript中,这并不工作:
var double = function(i) { i * 2; }
var x = double(5);
但是,如果你在那里添加返回它的工作原理。
var double = function(i) { return i * 2; }
您在JS寻找的术语是“匿名函数”,例如
$(function() {
/* in an anonymous function that is passed
to the jQuery document ready handler */
});
具体而言,匿名功能的部分是
function() { /* whatever */ }
jQuery是JavaScript编程语言的扩展。据我所知,在JavaScript没有拉姆达支持。你看到的是不是真的lambda表达式,但功能链接和传递函数作为第一类对象,就像Func键。 lambda表达式不是JavaScript语言规范。
我想他们指的是香草回调的语法和他们有具体的问题是Studio如何视觉调试JavaScript才能做到。
这就是我想他们指的是作为“拉姆达”
$.get('http://...').on('data',
function(data) {
...
}
);
你可能会感兴趣的http://jslinq.codeplex.com/项目。虽然这实际上并不带来真正的lambda语法的JavaScript,它可以让你使用linq
扩展方法(如where
,orderby
等)的任何事情是一个数组。
由于ECMAScript中6(2015年6月)的到来,您可以使用“箭经营者”,因此这个工程:
$(()=>{
alert("Hello arrow.");
});
......至少在现代浏览器,火狐,边缘和Opera,根据https://kangax.github.io/compat-table/es6/#test-arrow_functions。
需要注意的是箭头的功能不设置在调用的函数“这个”,所以他们还不如事件处理非常好,比好老匿名函数:
<a href="#">Click me</a>
<script>
$('a[href="#"]')
// arrow function:
.click((event)=>{
event.preventDefault();
alert("arrow: "+(this==window)); // 'this' is window, not the <a>.
})
// anonymous function:
.click(function(event) {
event.preventDefault();
alert("anonymous: "+this.tagName); // 'this' is <a>.
});
</script>
呀,但箭不IE11工作,为“让”。 http://kangax.github.io/compat-table/es6/
$("#CountrySelect").on("change", "#countrySelect", null, e => {
let that = $(e.target); //$(this);
if (that.val() !== "" && window.localStorage) {
localStorage.setItem("countrySelect", String(that.val()));
}
if (that.val()) {
$.ajax({
type: "POST",
url: urlControlSwitchLanguage,
data: {
language: that.val()
},
success: (data) => {
if ("error" in data) {
$("#mainDataBodyTable").empty();
$("#mainDataBodyTable").append(`<div>${data.error}</div>`);
console.error(data.error);
} else {
$("#mainDataBodyTable").empty();
countTableElement = createTable$(data, countTableElement);
$("#linkDownloads").attr("href", urlControlGetFile + "?language=" + that.val());
}
},
error: (xhr, ajaxOptions, thrownError) => {
console.log(xhr);
console.log(ajaxOptions);
console.log(thrownError);
}
});
}
使用此代码:
lstResource.find(x => x.Module == Module && x.Form == Form && x.ResourceName == Resource).Value
除了IE浏览器,它会为每一个地方工作。