我可以使用JQuery的lambda表达式?

问题描述 投票:3回答:9

jQuery lambda functions,用户询问关于JQuery的调试lambda表达式。我搜索很多网站,我无法找到JQuery的lambda表达式的例子。有谁知道这是可能的,如果是这样我在哪里可以找到一些例子?

javascript jquery lambda anonymous-function
9个回答
6
投票

λ表达式被使用(除其他外)作为简写于指定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语法为表达式树。


3
投票

JavaScript并没有真正有lambda表达式,因为你必须明确地返回一个值。像Ruby一些语言自动返回的最后一条语句的值,但在JavaScript中,这并不工作:

var double = function(i) { i * 2; }
var x = double(5);

但是,如果你在那里添加返回它的工作原理。

var double = function(i) { return i * 2; }

1
投票

您在JS寻找的术语是“匿名函数”,例如

$(function() { 
    /* in an anonymous function that is passed 
       to the jQuery document ready handler */ 
 });

具体而言,匿名功能的部分是

function() { /* whatever */ } 

0
投票

jQuery是JavaScript编程语言的扩展。据我所知,在JavaScript没有拉姆达支持。你看到的是不是真的lambda表达式,但功能链接和传递函数作为第一类对象,就像Func键。 lambda表达式不是JavaScript语言规范。


0
投票

我想他们指的是香草回调的语法和他们有具体的问题是Studio如何视觉调试JavaScript才能做到。

这就是我想他们指的是作为“拉姆达”

$.get('http://...').on('data', 
    function(data) {
        ...
    }
);

0
投票

你可能会感兴趣的http://jslinq.codeplex.com/项目。虽然这实际上并不带来真正的lambda语法的JavaScript,它可以让你使用linq扩展方法(如whereorderby等)的任何事情是一个数组。


0
投票

由于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>

0
投票

呀,但箭不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);
        }
    });
}

0
投票

使用此代码:

lstResource.find(x => x.Module == Module && x.Form == Form && x.ResourceName == Resource).Value

除了IE浏览器,它会为每一个地方工作。

© www.soinside.com 2019 - 2024. All rights reserved.