js中一些比较
js中的==和===
1 A===Bhttps://www.cnblogs.com/Being-a-runner-up/p/5591407.html
首先将比较A与B的基本数据类型,当两者的基本数据类型不相等的时候,直接放回false,当两者的基本数据类型相等,则比较两者的值,相等返回true,
2 A==B
首先会将两者不同的数据类型强制转成相同的数据类型,然后进行全等号的比较 ===
类型转换规则:
一个string类型和一个number类型,会全部转成number类型
一个boolean类型和一个非boolean,会将boolean类型转成number类型再做比较
一个string类型或者number类型,跟一个object,将object转换成基本数据类型再做比较
记住其他类型转String类型的原理是:toString()方法
一般都是string类型转Number其他类型转Number,使用Numbe()字符串转换数字时,如果是纯数字的字符串,直接转换成数字。如果字符串中有非数字的内容,整个字符串转换为NaN.如果字符串是一个空串或者是一个全是一个空格的字符串,则转换为0,null转换为0;undefined转换为number为类型NaN
第三条规则会导致大于1的number值不等于true0==false true
1==true true
2==true false
1===true false
js中的Infinity与NaN
1 infinity月NaN叫做js的全局属性,关键字,不是基本数据类型
实际操作中:
*0/0等于NaN *
一个正数除以0的值是infinity
一个负数除以0的值是-infinity
JavaScript 错误 throw 、try 和catch
try语句测试代码块的错误
catch语句处理错误
throw语句创建自定义错误
finally语句在try和catch语句之后,无论是否触发异常,该语句都会执行
JavaScaript错误
当JavaScript引擎执行JavaScript代码时,会发生各种错误
可能是语法错误,通常是程序员造成的编码错误或错别字
可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)
可能是来自服务器或用户的错误输出而导致的错误
或者其他不可预知的因素
try和catch
try语句允许我们定义在执行时进行错误测试的代码块
catch语句允许我们定义当try代码块发生错误时,所执行的代码块
他两是成对出现的
finally语句
finally语句不论之前的try和catch中是否产生异常都会执行该代码块
function myFunction() { var message, x; message = document.getElementById("p01"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "值是空的"; if(isNaN(x)) throw "值不是一个数字"; x = Number(x); if(x > 10) throw "太大"; if(x < 5) throw "太小"; } catch(err) { message.innerHTML = "错误: " + err + "."; } finally { document.getElementById("demo").value = ""; } }
throw语句
throw语句允许我们创建自定义错误
正确的技术术语是:创建或抛出异常。会被catch捕捉
JS中的Error对象
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error
当代码运行时的发生错误,会创建新的Error对象,并将其抛出
两种构建Error对象方式:
1 作为函数使用
直接new Error一个对象
const y=new Error('I was constructed via the "new" keyword')
2 创建的时候指定error 类型
EvalError
床架一个error实例,表示错误的原因
const y=new EvalError('I was xxx')
InternalError
创建 一个代表JavaScript引擎内部错误的异常抛出的实例。如:”递归太多“
const y=new InternalError('too many swaitch case')
RangeError 详见文档
ReferenceError
SyntaxError 详见文档 语法错误
TypeError 详见文档 变量或参数不属于有效类型
URIError