javascript - 如何在 Typescript 中使用 break 语句
问题描述
我是 Javascript 的新手。我从一个非常基本的 Angular 项目开始,即表单验证。就我而言,我必须validationTest()
在其自身内调用我的自定义方法一次。如果我不设置任何中断条件,那么递归就会太多。我必须阻止这一切。我尝试了许多其他解决方案:
我非常仔细地跟着他们,但我得到了这个:
模块解析失败:非语法中断 (84:12)
这是我的代码:
validationTest() {
let count =0;
this.isAnyRangeInvalid = false;
this.monthpicker.forEach(picker => {
if (picker.isValidRange === false) {
this.isAnyRangeInvalid = true;
}
});
count ++;
if(count===1) {
break;
}
this.validationTest();
}
甚至 VScode 编辑器也在 token 下显示了一条红色的锯齿线break
。我来自 Java 和 CPP 背景。请纠正我。
解决方案
要停止执行函数,请使用return
. 仅在 a or循环break
的上下文中才有意义。for
while
但另一个问题是您validationTest
没有变量的持久视图count
- 它完全是本地的,所以测试无论如何都不会工作。考虑改为传递一个参数,该参数将指示当前调用是否是递归的:
validationTest(lastTry = false) {
this.isAnyRangeInvalid = false;
this.monthpicker.forEach(picker => {
if (picker.isValidRange === false) {
this.isAnyRangeInvalid = true;
}
});
if (!lastTry) this.validationTest(true);
}
确保初始调用validationTest
不传递参数,或传递false
.
对于将自己限制为 N 次递归尝试的更通用解决方案,您可以传递一个数字,例如:
validationTest(triesLeft = 3) {
this.isAnyRangeInvalid = false;
this.monthpicker.forEach(picker => {
if (picker.isValidRange === false) {
this.isAnyRangeInvalid = true;
}
});
if (triesLeft !== 0) this.validationTest(triesLeft - 1);
}
推荐阅读
- sql - 尝试使用日期文件名设置 SQL Server 备份时出错
- php - WP ALL IMPORT 我想用 php 编辑器做一个基本的 php 功能
- sql - 使用服务器、数据库名称和表的 VBA sql 查询
- javascript - 如何使用 JavaScript 隐藏表单 div 的一部分?
- python - 如何使用自定义字母集进行 base64 编码?
- powershell - 设置 PowerShell 尝试查找应用程序的路径
- ssas - 使用 MDX 进行“同一商店”计算
- python - Python 阅读线
- java - 如何使用基于 Spring JPA 中的参数的计算字段进行分页动态请求
- php - 如果将 Composer 从 1.7 升级到 1.9 是否会影响 laravel 5.0 项目