Javascript 通过删除函数重置if/Else语句Else部分中的修正值

Javascript 通过删除函数重置if/Else语句Else部分中的修正值,javascript,html,function,if-statement,Javascript,Html,Function,If Statement,JS中是否有CSS中的初始值的等价物。当你有一个函数,你想用if语句以某种方式运行,但是在else部分,你想让值与if代码返回true之前的值保持一致。我总是在else中重新编写原始值,但这似乎是一种效率极低的方法,例如: var a = something, b = something_else; if (a) { run a function which changes lots of values; } else { re-type the values to what they

JS中是否有CSS中的
初始值的等价物。当你有一个函数,你想用if语句以某种方式运行,但是在
else
部分,你想让值与
if
代码返回true之前的值保持一致。我总是在
else
中重新编写原始值,但这似乎是一种效率极低的方法,例如:

var a = something, b = something_else;

if (a) {
run a function which changes lots of values;
} else {
    re-type the values to what they were before the function ran;
}
下面是我试图做的一个更具体的版本。我有一个forEach方法,可以更改一些字符串值。如果我想将其设置为在
else
上忽略初始
If
中的所有代码,我知道我可以通过将代码复制并粘贴到不同的函数名下,并将第二个
切片
值设置为300,这是原始字符串的长度,但这似乎是一种非常冗长的操作方式

必须有一种方法来设置
else
代码,以便删除/终止原始myresize()函数,使所有原始值都保持为真

var content = document.querySelectorAll(".generic-content p");

function textSlice() {
    if (window.innerWidth < 500) {
        function myresize() {

        content.forEach(function(index) {
            var x2, x3, x4;
            x2 = index.textContent;
            x3 = x2.slice(0, 100) + "[...]";
            index.textContent = x3;

        });
            myresize();
    }


    } else {
        // remove the myresize(); function or somehow kill it
    }
}

addEventListener("resize", textSlice, false);
var content=document.queryselectoral(“.generic content p”);
函数textSlice(){
如果(窗内宽度<500){
函数myresize(){
content.forEach(函数(索引){
变量x2、x3、x4;
x2=index.textContent;
x3=x2.切片(01100)+“[…]”;
index.textContent=x3;
});
myresize();
}
}否则{
//删除myresize();函数或以某种方式终止它
}
}
addEventListener(“调整大小”,textSlice,false);

JavaScript中没有可恢复元素初始状态的内置功能。但是,构建这样的功能相对容易。开始之前,将状态保存到全局对象,然后可以随时使用该对象恢复初始状态

请尝试下面的代码。请注意,
forEach
方法的第一个参数是元素本身,而不是索引。因此,将其命名为
index
是不对的。我已将其更改为

var content=document.queryselectoral(“.generic content p”);
//保存初始状态。
var初始值=[];
(功能(){
content.forEach(功能(项){
初始.push(item.textContent);
});
})();
函数textSlice(){
如果(窗内宽度<500){
content.forEach(功能(项){
变量x2、x3、x4;
x2=item.textContent;
x3=x2.切片(01100)+“[…]”;
item.textContent=x3;
});
}否则{
//恢复初始状态。
content.forEach(功能(项目、索引){
item.textContent=初始[索引];
});
}
}
addEventListener(“调整大小”,textSlice,false)

窗口调整演示
第一段

第二段

第三段


重点是什么?删除函数不会更改函数可能已更改的外部变量的值。在垃圾收集过程中,当
textSlice
的执行完成后,该函数将被删除。我需要语句的
else
部分,以防窗口在最初调整到低于此值后重新调整到500px以上。我可能应该给出一个例子,说明
if
代码块中的代码是根据自身的优点编写的,而不是将其放在内部函数中。无论如何,我的观点是,有没有一种方法或简写方法可以在
else
代码块中删除初始
if
代码块,而不是手动重置值,我猜没有?恐怕没有。如果窗口宽度在调整大小后恢复到500px以上,我希望字符串长度恢复到原始设置。删除else语句将防止发生这种情况。但我想说的是,是否有必要使用某种初始值方法或速记删除函数或代码块,我猜没有。函数是代码块,而不是时间机器。删除它不会恢复执行前的初始状态。有关解决方案,请参阅我的更新答案。