TypeError:JavaScript
你能把一个数字和一个字母加起来吗?
假设我问你两个数相加的结果是什么1,H你能告诉我答案吗?
答案显而易见:不。
JavaScript 也是如此!如果在 JavaScript 中将 1 和 H 相加,或者尝试对两个类型不匹配的操作数执行操作,JavaScript 会抛出异常TypeError。
所以,从技术角度来说,你可以说“当传递给函数的操作数或参数与该运算符或函数所期望的类型不兼容时,就会抛出 TypeError ”。
因此,在执行任何操作之前,必须确保变量具有相同的数据类型。类型不匹配会在程序执行过程中产生错误。
因此,在执行任何操作之前,必须确保变量具有相同的数据类型。类型不匹配会在程序执行过程中产生错误。
TypeError 的类型
例如,Uncaught TypeError如果您尝试将数字转换为大写字符,就会出现错误。因为 `As`toUpperCase()是一个将字符串转换为大写字符的函数。对于以下代码结构,它会报错。
代码结构
var num=1; i.toUpperCase();
错误
如何消除“未捕获的类型错误:无法设置属性”
有很多方法可以克服这个错误。
1. 使用 toString() 函数
您可以先使用 toString() 函数将数字转换为字符串,然后可以使用 toUpperCase() 函数将该字符串转换为大写字符。
var num = 1;
尝试 {
num.toString().toUpperCase(); // 先将数字转换为字符串
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
输出:1
2. 使用预定义类的构造函数 new String()
var num = 1;
num=new String(num);
尝试 {
num.toUpperCase(); // 您无法将数字转换为大写
}
catch(err) {
console.log(err.name);
}
输出:1
以下是 JavaScript 在不同浏览器中可能抛出的其他一些 TypeError 类型错误。
与 console.log() 相关的 TypeError
TypeError:对象 # 的属性“log”不是一个函数(Chrome)
TypeError: console.log 不是一个函数(Firefox)
TypeError: 'your string' 不是一个函数(正在执行 'console.log("your string")')(Safari)
TypeError: 应为函数(IE)
与 prompt() 相关的 TypeError
TypeError:对象 [object Object] 的属性“prompt”不是一个函数(Chrome)
TypeError: prompt 不是一个函数(Firefox)
TypeError: '字符串,可能有所不同' 不是一个函数(正在评估 'prompt("你的问题")') (Safari)
TypeError: 应为函数(IE)
与 confirm() 相关的 TypeError
TypeError:对象 [object Object] 的属性“confirm”不是一个函数(Chrome)
TypeError: confirm 不是一个函数(Firefox)
TypeError: '字符串,可能有所不同' 不是一个函数(正在评估 'confirm("你的问题")') (Safari)
TypeError: 应为函数(IE)
原文出处:lambdatest.com
文章来源:https://dev.to/lambdatest/typeerror-javascript-pni