JS:我应该在点击(或等效)事件中设置一个var/let吗?

JS: Should I set a var/let in a click (or equivalent) event?

本文关键字:一个 设置 var let 事件 JS 我应该      更新时间:2023-09-26

想知道什么以及为什么是正确的?

我问是因为我永远不确定什么时候使用什么。

这:

function foo(){
    $('.bar')
        .click(function(){
            var baq = 'baz';
        })
}

或者这个

function foo(){
    var baq;
    $('.bar')
        .click(function(){
            baq = 'baz';
        })
}

还有这个:

function foo(){
    $('.bar')
        .click(function(){
            let baq = 'baz';
        })
}

或者这个

function foo(){
    let baq;
    $('.bar')
        .click(function(){
            baq = 'baz';
        })
}

回答前两段代码。

假设您单击一个类名为 bar 的项目,当您执行此操作时,您希望将baq设置为 baz 的值,仅此而已。您并不真正关心点击发生后的变量baq此处,变量在其范围内是局部的

function foo(){
$('.bar')
    .click(function(){
        var baq = 'baz';
    })}

现在,也许您担心可变 baq。假设您正在制作披萨?Baq首先是一个字符串变量" "

在第一个功能中,你添加奶酪,有些人可能不会。所以我说baq="Cheese".在下一个选择中,假设有一个类"vegetables"。当有人点击蔬菜时,我会添加蔬菜, baq=baq+"mushrooms" .接下来,有一个类"meat"。同样,依此类推。

本质上,当我想重用baq时,我使用以下变量,其中变量global在其作用域中。点击奶酪和蘑菇吉斯菲德尔

function foo(){
var baq;
$('.bar')
    .click(function(){
        baq = 'baz';
    })}

有关let使用的信息,请查看此链接

这取决于!!

场景 1:根据事件更改变量

    function foo(){
    var baq;// to avoid scope conflicts
        baq = 0;
    $('.bar')
        .click(function(){
            baq++;//increment baq with click event
        })
}

场景 2:处理上下文

    function foo(){
    var baq;// to avoid scope conflicts
        baq = $(this);
    $('.bar')
        .click(function(){
            baq = $(this);
        })
}

我无法想象所有的情况,但是YouTube上有一个关于这个的好视频。视频