前言
js是一种弱类型语言,也就是没有明确规定变量是何种类型的语言。不像java,c++等,在定义的时候,就会明确指定变量的类型。不过听说java10中也将支持var关键词,也有想“弱类型”发展的趋势。
弱类型,就会出现很多意外情况。比如参数的判断,类型的转换等等。
在js中,常见的错误类型一般分为下面三种:
1、类型转换错误
2、数据类型错误
3、通信错误
类型转换错误
这种错误一般和运算符一起讨论。比如我们再判断相等性的时候,建议使用全等于 === 和 非全等于 !== ,这样可以判断类型,不然各种“隐式转换”,而“隐式转换”的规则特别多,只要一不小心,就可能转换错误。
隐式转换 一般会在流程控制语句(比如if switch ),运算符(+ 、-、* 、\ 、%、!)等等。例如下面的例子:
1 | console.log('3' - 1) // 2 |
上面这些语句的结果,要知道!是Boolean()转换,==是要Number转换,然后undefined和null在进行==判断的时候,又不进行转换。所以很烦。
数据类型错误
在函数传参的时候,一般要进行参数判断。我一般分为以下三种情况:
1 | 1、判断基本类型 |
通信错误
一般就是在通信的时候,在域名后面加URI的时候,要将字符串,用encodeURIComponent()进行编码。
有关错误对象:
将错误日志上传到服务器
这个代码是在网上搜到的。
1 | var logger = (function(){ |