JS 空等于0引发的bug

从接手的烂摊儿中又学到了一点点,今天被后端报了一个bug,莫名多出了一列,经排查

d的值为空时

1、判断>=0,0没有加引号,结果返回true

<td class="green" v-if="item.d>= 0">+{{item.d}}%</td>

2、判断等于''时,也返回true

<td class="green" v-if="item.d>= 0">+{{item.d}}%</td>

导致多出一列,于是写了个小实例又验证了一番,JS是弱类型语言,判断前,应该对数值类型进行强转,(补基础-->)在JS中null,0,””,false,和 undefined 全部彼此相等(==)

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>test</title>

<script>

function display(){

const obj = [

{"a":"23:45","b":"2.1", "c":"-0.27","d":"-1.68"},

{"a":"16:15","b":"2.26", "c":"1.01","d":"2.62"},

{"a":"16:00","b":"2.27",  "c":"1.26","d":""}];

obj.forEach((item, index) => {

/**

if (item.d < 0) {

console.log(item.d); // -1.68

}

*/

if (item.d < '0') {

console.log(item.d); // -1.68  ''

}

if (item.d >= '0') {

console.log(item.d); // 2.62

}

if (item.week >= 0) {

console.log(item.d); // 2.62   ''

}

});

}

</script>

</head>

<body>

<h2>神奇的JS</h2>

<button type="button" onclick="display()">显示结果</button>

</body>

</html>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,736评论 0 3
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,068评论 0 2
  • 北京2018年4月1日上午,NBA常规赛勇士客战国王的比赛中,发生了令人痛心不已的一幕。比赛进行到第三节还有41...
    Curry_宇阅读 1,281评论 1 1
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,142评论 1 10
  • *node下用express框架,实现一个简单的mvc *构建工具:gulp / babel / webpack ...
    韩娜爱吃辣_前端程序媛阅读 1,135评论 0 1