美文网首页
js类型转换练习

js类型转换练习

作者: 流着万条永远的河 | 来源:发表于2017-08-27 01:00 被阅读0次
if  ('hello') {
        console.log('hello')
}
输出hello。
这里if语句括号里的条件转化为逻辑上的
布尔值作为判断标准,真则输出第一项,假则第二项。
if ('') {
        console.log('empty')
}
''空字符串为假,输出不了第二项。
if ('  ') {
        console.log('blank')
}
输出blank,在这里'     '有空白字符的空字符串为真的,跟单独测试它的布尔值是冲突的。这是为什么呢?等下面讲“==”的时候,就明白了,测试时,用的是
'    ' == false
然后得到一个真,这里的==让这个成立了,等到了下面,就明白了!
if ([0]) {
        console.log('array')
}
输出array,在这里[0]值为真,但是脱离if后,布尔值也是假的,同上面的情况,也是先特殊处理对待吧。
if (0.00) {
          console.log('0.00')
}
无法输出,这里为假,符合它本身的布尔值。


小结:这些都是典型错误写法,写的时候要像这样
if (a === '   '){
      ,,,,,,,,,,,
}
不要写这种——
if ( a ),,,,,,,
另外,这里的原理是——
undefined                       false
Null                                 false
Boolean                          直接判断
Number                           +0,-0,NaN为false,其他为true
String                             ''为假其他为真
Object                             true
没有真实值的都为假,除了'      ' ,[ ]。有真实值的都为真,除了数值正负0。我觉得只是想让if语句更有意义,有应用价值,才会让'      '或者[0]的布尔值不同于以往。


==的判断——
规则就是等号两边的全都向着数字去转化,不顾一切地转化,最后再比较,所以,以后在if(a == b)会更麻烦,直接写成if (a === b)!
原理——
null == undefined 
true
Number (null)
0
Number(undefined)
NaN
Boolean中的:
Number (true)
1
Number(false)
0

String转化的结果是NaN或数字。
Object用其valueOf值或toString值。
练习——

 ''  == 0
真的。''转数字是0。
'   '  == 0
真的。'    '转数字是0。

'' == true
false,true转成1。

'' == false
true,false转成0。

'    ' == true
false

'   ' == false
true
小结:它两的数值都是0,布尔值也都是假。

!'   '  == true
取反的优先级大,先取反,转化成布尔,'      '的布尔是真,取反为假,数值为0,真的数值为1,不等。
!'    ' == false
先取反,得0, false数值化也是0.为真。
'hello'  == true 
数值转化得NaN == 1,false
'hello' == false
同上,假。
'0' == true
数值化为0 == 1,false
'0'  == false
同上,真。
同理——
'0.00'  == false
true
'00' == false
true
undefined  == null
不用转,直接规定为真。
{} ==true
数值转化为NaN和1,假。
[] == true
数值转化为0和1,假。
var obj ={
     a :  0,
     valueOf:  function(){return  1}
}
obj == ' [object Object]' 
数值转化,obj取valueOf值,为1。
右边其实是字符串,转值为NaN。
不等,为假。
obj == 1
同上,为真。
obj == true 
同上,又true转化为1,所以为真。  



最后把前面的貌似的冲突来解释下——
规定说了:
'       '的布尔值为真,当时验证用的是
'      '    ==  false
运行得到了true,也就是为假,所以冲突了,源于 == 的用法比较的不是布尔值了,比较的是趋向对目标的数值转化的结果的比较了,都是0,所以这句话是真,但是证明不了两者间的布尔值哦,那布尔值如何得到??
请记结论就好了。
至于那个[0]也是如此的套路了。
这里的启发是什么?
慎用 ==,还有if (a)也经常出错,都不如if (a === b)。
包括练习题,那些写法都是容易产生歧义的,让人看不懂,自己写就要,写的有逻辑,还要明显体现,用小括号哦。








相关文章

  • JS的基本小结

    JS基本输出方式 JS数据类型 变量 常量 变量常量小练习 声明提前 隐式转换 显示转换/强制转换

  • js类型转换练习

  • javaScript中数据类型转换方法

    JS 数据类型转换 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了...

  • 数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了...

  • JavaScript类型转换

    在js中数据类型转换一般分为两种,即强制类型转换和隐式类型转换(利用js弱变量类型转换)。 强制类型转换 即通过使...

  • 前端开发入门到实战:JavaScript字符串转换数字

    js 字符串转换数字方法主要有三种: 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供...

  • 前端开发入门到实战:JavaScript字符串转换数字

    js 字符串转换数字方法主要有三种: 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供...

  • js中的类型转换

    在js中数据转换分为3种:隐式类型转换,强制类型转换,函数转换 1.隐式类型转换 (1):运算符转换 js中的值在...

  • JS类型转换

    方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了parseInt()...

  • js关于字符串和数字的转换

    js字符串转换成数字 js 字符串转换数字方法主要有三种:转换函数、强制类型转换、利用JS变量弱类型特点进行转换 ...

网友评论

      本文标题:js类型转换练习

      本文链接:https://www.haomeiwen.com/subject/frsvdxtx.html