Javascript 避免在scroll上声明变量?
这里我有一些全局范围内的变量,一个函数声明一个变量并给它赋值,然后在scroll上调用这个函数。 这样,在每一个卷轴上,你都要声明“variableFour”,这不是一个好的实践,对吗? 但是,我不想用不必要的变量挤满全局范围,也不能使用IIFE。是否有一种“最佳实践”方法可以在函数外部声明变量,但仍然只能在该函数的范围内使用它Javascript 避免在scroll上声明变量?,javascript,scroll,scope,Javascript,Scroll,Scope,这里我有一些全局范围内的变量,一个函数声明一个变量并给它赋值,然后在scroll上调用这个函数。 这样,在每一个卷轴上,你都要声明“variableFour”,这不是一个好的实践,对吗? 但是,我不想用不必要的变量挤满全局范围,也不能使用IIFE。是否有一种“最佳实践”方法可以在函数外部声明变量,但仍然只能在该函数的范围内使用它 我认为您的代码示例没有任何问题,我严重怀疑变量声明是否会降低代码的速度。我肯定只有在你绝对确定这会引起问题(不会)时才会开始担心这类事情,否则这可能是白费力气 如果您真
我认为您的代码示例没有任何问题,我严重怀疑变量声明是否会降低代码的速度。我肯定只有在你绝对确定这会引起问题(不会)时才会开始担心这类事情,否则这可能是白费力气 如果您真的想对此进行优化,您可以做的一件事是调用
veryInterestingFunction
,也就是说,您不一定需要响应每个滚动事件(取决于您的逻辑)
根据您的问题,IIFE/函数闭包本质上是我所知道的限制JavaScript范围的唯一方法,因此如果您不能使用它,我看不到任何其他选项
在函数外部声明变量,并且仍然只能在该函数的范围内使用它
我想,那是不可能的
当我不想拥挤全局范围时,我将声明一个全局对象,例如App={}
,并使用它的属性代替全局变量
var variableOne;
var variableTwo;
var variableThree;
function veryInterestingFunction() {
var variableFour;
if(a){
variableFour = 'Good';
}
else {
variableFour = 'Decent';
}
console.log(variableFour);
}
$(window).on('scroll', function(){
veryInterestingFunction();
});
或者您可以使用ES6中的类,在您的范围中声明一个空变量是没有问题的。如果它不是全局的,则它属于范围
没有必要担心表现。如果在范围内声明变量,Javascript
垃圾收集器将为您清空该变量 你的逻辑是“局部变量不好”——事实并非如此。在你的例子中,如果variableFour
只在veryInterestingFunction
中使用,那么这就是它所属的。在滚动上声明变量不是一种坏做法吗?不,在我看来不是,我永远不会用(错误的)效率理由将其推广到全局范围,是的,在我的情况下,这可能是更好的选择,非常感谢。
App.variableOne;
App.variableTwo;
App.variableThree;