gpt4 book ai didi

javascript - 使用 JavaScript eval() : wondering about code security/vulnerabilities

转载 作者:行者123 更新时间:2023-12-03 03:49:43 25 4
gpt4 key购买 nike

我的页面中有一个元素列表,我想对其应用 jQuery 滑动动画。但是,我希望动画按顺序链接起来,即只有当前一个元素的动画完成时,一个元素才会开始其动画。

列表的长度是可变的,所以我需要找到一个动态的解决方案。我想出了这个:

function closeYear(year, speed, complete) {
$(year).next().slideUp(speed, complete);
}

function closeYears(years, speed, complete) {
if ($(years).length == 1) {
closeYear($(years).first(), speed, complete);
} else if ($(years).length > 1) {
var codeStr = ""
$(years).slice(0, $(years).length - 1).each(function(k) {
codeStr = codeStr + "closeYear($(years)[" + k + "],'" + speed + "',";
});
codeStr = codeStr + "closeYear($(years).last(),'" + speed + "',complete)" + Array($(years).length).join(")") + ";";

eval(codeStr);
}
}

通过上面的代码,我能够完成我想要的事情,包括能够指定动画的速度,以及在处理完所有内容后执行的 complete 函数,像这样:

closeYears($(".year"), "slow", function() {console.log("done!");})

我的问题是关于eval()函数的使用。因为我对安全问题不是很了解,所以我想知道我的代码中是否有什么需要担心的地方,它的编写方式,或者是否有更好/更安全/更智能的方法来做我想做的事情...

有什么意见吗?

最佳答案

您可能只需要一个伪递归函数:

function closeYears(years, speed, complete) {
(function close(i){
if(!years[i]) return complete();
closeYear(years[i],speed,function(){
close(i+1);
} );
})(0);
}

关于javascript - 使用 JavaScript eval() : wondering about code security/vulnerabilities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45219636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com