目录
一:布尔值转换:
([])?ture:false;
给出如上代码,判断输出‘有一下特例转换为false,其它均转化为true;
1)string:''转化为false
2)number:0转化为false
3)对象: 为null时,转化为false
4)undefined:转化为false
二:==运算符
遵循下面几条准则:
1、==运算符表数值比较,青睐于number类型
'1' == 2 //false,首先转'1'隐式转换为1,然后再比较
2、等式左右两端有值为布尔值类型,先转换为number类型
3、等式左右两端存在对象类型时,此时需要将对象转换为number类型
4、 null == undefined // true
关于转换的函数:
1)toString()方法:调用此方法会返回反应此对象的字符串。此方法继承自Object对象,Function、Date、Array、正则均有重写这个方法。
- 数组类(Array class)的的
toString()
方法将每个数组元素转换为一个字符串,并在元素之间添加逗号后合并成结果字符串;- 函数类(Function class)的
toString()
方法返回这个函数的实现定义的表示方式。实际上,这里的实现方式是通常是将用户定义的函数转换为Javascript源代码字符串
;- 日期类(Date class)定义的
toString()
方法返回了一个可读的(可被JavaScript解析的)的日期和时间字符串;- RegExp类(RegExp class)定义的
toString()
方法将RegExp
对象转换为表示正则表达式直接量的字符串:
2)valueOf()方法:调用此方法会返回此对象的原始值,多数情况下会返回此对象本身。
对象转换为数值类型的过程:
1)首先调用valueOf()方法,返回对象的原始值。对于大多数对象来说,这个函数返回的是对象本身。
2)然后对于返回的对象本身,调用toSting()方法。此方法将对象转换为字符串3)上述均不能完成,JavaScript抛出一个类型错误的异常。
例:var person = {name:'lei',age:'24'} person.valueOf() //{name: "lei", age: "24"} person.valueOf().toString() //"[object Object]" typeof person.valueOf().toString() //"string"
然后按照上述规则1,将string转换为number类型,之后再比较。
补充对象转换为string类型的过程:
1)如果对象具有
toString()
方法,则调用这个方法。如果它返回一个原始值,JavaScript将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串的结果。需要注意的是,原始值到字符串的转换2)如果对象没有
toString()
方法,或者这个方法并不返回一个原始值,那么JavaScript会调用valueOf()
方法。如果存在这个方法,则JavaScript调用它。如果返回值是原始值,JavaScript将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串结果。3)上述均不能完成,因此这时它将抛出一个类型错误异常。