JavaScript避坑

  1, js运算精度问题=>

  1 输入>0.1+0.2==0.3
  2 返回>false
  3 
  4 输入>0.1+0.2
  5 返回>0.30000000000000004

  支招: 思路很简单,先赋给个变量,用toFixed(保留小数位);函数四舍五入,但是这样还不够,如果处理的值还需要参与运算的话,需要用Number(值/变量);函数转换为数字类型
  1 输入>var num=0.1+0.2;
  2 输入>var num2=num.toFixed(2);
  3 输入>num2
  4 返回>"0.30"
  5 输入>Number(num2);
  6 返回>0.3

2,js变量运算问题
  1 输入>"2"-3
  2 返回>-1
  3 
  4 输入>"2"+3
  5 返回>"23"
  6 
  7 输入>"2"+-3
  8 返回>"2-3"

  将所有的运算参数先转成Number类型再运算,如果是变量类型,切需要注意你的变量是否包含数字,如果不包含就更麻烦了,需要用isNaN(变量);函数来处理后再行Number函数处理后运算之
  1 输入>Number("2")-Number("3")
  2 返回>-1
  3 
  4 输入>Number("2")+Number("3")
  5 返回>5
  6 
  7 输入>Number("2")+-Number("3")
  8 返回>-1

3,数字字符串比较大小问题 如果两边的值的类型不一致的话一定要转换成一致类型的变量比较才会准确(数字和数字字符串比较也是坑。。。)
  1 输入>"1">"2"
  2 返回>false
  3 
  4 输入>"11">"9"
  5 返回>false

4, js中true、false与undefined的问题=>
  1 输入>undefined==true
  2 返回>false
  3 
  4 输入>undefined==false
  5 返回>false
  6 
  7 输入>if(!undefined) console.log(false);
  8 返回>false


  看起来更加怪异,对不,额。。。,我想说的是:这个无解。。。(让我先哭会儿...
  )。。。;对于此只能死记硬背了,简单总结就是:undefined这个东东不等于false也不等于true,但是,但是,敲黑板=>在判断语句中它是false








原文地址:https://www.cnblogs.com/maomaochong123/p/8412670.html