JavaScript是如何处理异常值,如非数字类型的输入?
时间: 2024-09-11 13:16:42 浏览: 42
在JavaScript中,尝试对非数字类型的输入执行数学运算或调用需要数值参数的方法时,会触发`TypeError`异常。例如,在上面的`isLeapYear`函数中,如果你传递给它一个非数字的字符串,尝试进行除法操作时就会抛出错误。
为了处理这种情况,通常可以在调用之前先检查输入的类型,确保它是数字。下面是一个修改后的版本,包含异常处理:
```javascript
function isLeapYear(year) {
// 检查输入是否为数字
if (typeof year !== 'number') {
console.error('输入不是一个有效的年份');
return;
}
// 接着判断闰年的条件
if (Number.isInteger(year) && year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)) {
return "是闰年";
} else {
return "不是闰年";
}
}
```
这里我们添加了`typeof`检查,如果`year`不是`'number'`,则打印错误信息并退出函数,避免了异常的发生。
相关问题
使用JavaScript语言进行编粉实现如下箭求: 1.使用 prompt方法从窗口读入一个数字 2.将读入的内容通过 pamseInt 苏状特换成数字类型 3.根据输入的数字作为金字塔的行数, 通过 docunentwwite 在页面输出一个由号 构成的金字塔。
在JavaScript中,你可以按照以下步骤来实现这个需求:
1. 首先,使用`prompt()`函数从用户那里获取输入的文本,它会在浏览器的弹窗中显示提示让用户输入一个值:
```javascript
let input = prompt("请输入一个数字用于构建金字塔:");
```
2. 然后,你需要将用户的输入转换成整数类型,因为`prompt()`返回的是字符串。可以使用`parseInt()`函数进行转换,如果输入不是有效的数字,这将会抛出异常。因此,我们需要添加一些错误处理:
```javascript
let num = parseInt(input);
if (isNaN(num)) {
console.error("无效的输入,请输入一个数字.");
} else {
// 接下来的代码将基于num进行操作...
}
```
3. 最后,根据输入的数字`num`,创建一个金字塔。可以利用嵌套循环来实现:
```javascript
for (let i = 0; i < num; i++) {
let row = "";
for (let j = 0; j <= i; j++) {
if (j === 0 || j === i) {
row += "#";
} else {
row += " ";
}
}
document.write(row + "<br>"); // 在文档上打印每一行
}
```
在这个代码片段中,外层循环控制行数,内层循环负责生成每个特定行的星号(#)。如果想清除每行之间的换行符,可以在`document.write`前移除`<br>`标签。
如果你想让代码更清晰些,可以封装成一个函数:
```javascript
function createPyramid(num) {
num = parseInt(num);
if (isNaN(num)) {
return "无效的输入,请输入一个数字.";
}
let pyramid = "";
for (let i = 0; i < num; i++) {
let row = "";
for (let j = 0; j <= i; j++) {
row += (j === 0 || j === i) ? "#" : " ";
}
pyramid += row + "\n"; // 使用"\n"代替<br>
}
document.body.innerHTML = pyramid;
}
createPyramid(prompt("请输入一个数字用于构建金字塔:"));
```
现在,当你运行这段代码并输入一个数字,就会看到一个对应行数的金字塔出现在网页上。如果输入非数字,会给出相应的错误提示。
阅读全文