近期有在使用 Bootstrap 的 table 进行 html 页面列表显示…… 其中有一个传值判断的 js 事件。
使用 bootstrapTable 请求并处理服务器传值:value
逻辑上,需要对 value 进行判断 —— 当值大于“0”时,显示数值;小于“0”时,显示为 0;为空时显示为“-”。
{
field:'private*ine',
title:'*数',
valign:'middle',
align:'center',
width:'9%',
sortable:true,
formatter:function(value, row, index) {
if (!value) {
return '-';
}else if(value>=0){
return value;
}else {
return '0';
}
}
}
这是某最先写的代码,希望先对 value 进行非空判断,然后再进行值大小的判断。对于 java 这类强类型语言来说,这种逻辑判断应该是合理的……可是对于 JavaScript 这种弱类型语言来说。 !value 意味着不存在,对于数字而言“0”这个数值就意味着是不存在的……
所以:当 value == 0 或 value == null 时 这样的判断逻辑最终会显示为“-”。
实际对为空的判断,在这里可以有俩种方向可以实现:
1、 if (value==null) { return '-';}else if(...){...}
2、 if (value>=0){...}else if(!value) { return '-';}
方向 1:将(!value)修正为(value==null)
方向 2:将顺序调换为 if (...){...}else if(!value) { return '-';} 程序判断的顺序为先判断 value 是否 ≥0,在判断是否存在……
按照强类型语言的思路,我后来选择了 1 方向。这也是自己在偷懒的写法上,踩入的坑。
下面附上网上大神总结的判断表格。
参考资料:
http://ecma-international.org/ecma-262/5.1/#sec-11.9.3
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于