我尝试运行脚本,但出现此错误:在以“ES3”或“ES5”版本为目标期间,严格模式下的 block 中不允许使用函数声明。模块自动处于严格模式。
我使用 typescript ,这是脚本:
export default () => {
if(document.getElementById("myRange")){
//slider
var slider = document.getElementById("myRange") as HTMLInputElement;
var output = document.getElementById("demo");
var gainTimeOutput = document.getElementById("time");
var sliderEco = document.getElementById("myRange-eco") as HTMLInputElement;
var outputEco = document.getElementById('demo-eco');
var eco = document.getElementById('eco');
outputEco.innerHTML = sliderEco.value;
output.innerHTML = slider.value;
function movingSlider(){ <-- Error happens here
output.innerHTML = slider.value;
var convertSlider = parseInt(slider.value);
var convertSliderEco = parseInt(sliderEco.value);
var gainTime = Math.round(convertSlider).toString();
var gainMoney = (Math.round(convertSlider* 2).toString();
gainTimeOutput.innerHTML = gainTime + "h";
outputEco.innerHTML = sliderEco.value;
eco.innerHTML = gainMoney + "€";
}
slider.oninput = e => {
movingSlider()
};
我不明白为什么,问题是当我删除我的 if(document.getElementById("myRange"))
时,效果很好,
有人知道为什么我会出现此错误以及我应该如何解决它?
最佳答案
这几乎就是错误所说的内容。您在 block 中有一个函数声明,其行为为 weird在 ES6 中指定之前跨环境且不可预测,因此您的设置不允许这样做。相反,将函数表达式分配给变量名。改变
function movingSlider(){
至
const movingSlider = function movingSlider(){
如果您发布了导出函数的完整代码,那么代码可能会更清晰并且如果您只是返回,则不需要上述内容如果 myRange
不存在,则提前:
export default () => {
const slider = document.getElementById<HTMLInputElement>("myRange");
if (!slider) {
return;
}
// rest of your code
这可以让您避免在函数的其余部分中出现不必要的缩进空间。
关于javascript - typescript 错误: Function declarations are not permitted in blocks in strict mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60349932/