js中0和'0'的区别
来源:互联网 发布:淘宝秒杀软件taovb 编辑:程序博客网 时间:2024/05/16 10:16
写这篇博客的原因是我在写js代码校验输入框input的值的时候遇到的一点疑惑,校验代码如下:
<!DOCTYPE html><html><head> <meta charset="utf-8"></head><body><input type="text" id="input"/><button onclick="check();">校验</button></body><script type="text/javascript" src="jquery-3.0.0.min.js"></script><script type="text/javascript"> function check() { if (!$("#input").val()) { console.log("值为空,校验不通过"); return; } console.log("校验通过"); }</script></html>
当然上面的校验是否为空的代码没毛病,但这时候我产生了一丝疑虑,如果input中什么都没输入,那么校验肯定不会通过,这是毫无疑问的,但是如果输入的是’0’呢?
当然我们也知道如果是number类型的0在js的逻辑判断中肯定是false的,而字符串类型的’0’是true,所以这个问题的关键是$(“#id”).val()的值到底是什么类型的?
测试代码如下:
<!DOCTYPE html><html><head> <meta charset="utf-8"></head><body><input type="text" id="text_input"/><input type="number" id="number_input"/><select id="select"> <option value="">空串</option> <option value="0">0</option></select><button onclick="check();">校验</button></body><script type="text/javascript" src="jquery-3.0.0.min.js"></script><script type="text/javascript"> function check() { if ($("#text_input").val()) { console.log("text " + $("#text_input").val() + " is true"); } else { console.log("text " + $("#text_input").val() + " is false"); } if (parseInt($("#text_input").val())) { console.log("parseInt text " + $("#text_input").val() + " is true"); } else { console.log("parseInt text " + $("#text_input").val() + " is false"); } if (parseFloat($("#text_input").val())) { console.log("parseFloat text " + $("#text_input").val() + " is true"); } else { console.log("parseFloat text " + $("#text_input").val() + " is false"); } console.log("----------------------------------------------------"); if ($("#number_input").val()) { console.log("number " + $("#number_input").val() + " is true"); } else { console.log("number " + $("#number_input").val() + " is false"); } if (parseInt($("#number_input").val())) { console.log("parseInt number " + $("#number_input").val() + " is true"); } else { console.log("parseInt number " + $("#number_input").val() + " is false"); } if (parseFloat($("#number_input").val())) { console.log("parseFloat number " + $("#number_input").val() + " is true"); } else { console.log("parseFloat number " + $("#number_input").val() + " is false"); } console.log("----------------------------------------------------"); if ($("#select").val()) { console.log("select " + $("#select").val() + " is true"); } else { console.log("select " + $("#select").val() + " is false"); } if (parseInt($("#select").val())) { console.log("parseInt select " + $("#select").val() + " is true"); } else { console.log("parseInt select " + $("#select").val() + " is false"); } if (parseFloat($("#select").val())) { console.log("parseFloat select " + $("#select").val() + " is true"); } else { console.log("parseFloat select " + $("#select").val() + " is false"); } }</script></html>
运行结果如下:
- 输入空串时
- 输入0时
从上面的测试中我们可以看出,只要是$(“#id”).val()获取值,别管你是input还是select,或者input的类型是text还是number,它的值都是字符串类型的,所以像上面校验代码中写的那样校验是否为空是全面可行的,不用担心输入0时会识别成number类型0来判断,同时也推荐使用上面校验代码中的校验方式。
阅读全文
0 0
- js中0和'0'的区别
- JS中undefined,null,"",0和false的区别
- JS 中 .和[]的区别
- JS中({})和(){}的区别
- js中 中括号和.的区别
- js中 中括号[ ]和.的区别
- PHP和JS中""和''的区别
- JS中setTimeout 和 setInterval 的区别
- js中 opener和parent的区别
- js中 opener和parent的区别
- js中 opener和parent的区别
- js中 opener和parent的区别
- js中 opener和parent的区别
- js中Readonly和Disabled的区别
- js中opener和parent的区别
- js中showModalDialog和showModalessDialog的区别
- js中substring 和substr的区别
- js中opener和parent的区别
- Gson入门使用
- Activity的现场保护
- exec族函数的详细说明
- C++模板(函数模板和类模板)
- HPE 3par SS7200 扩容步骤
- js中0和'0'的区别
- Codeforces Round #416 (Div. 2)
- FCoe 对比FCIP
- 常用C语言time时间函数
- 【C语言】注释转换项目实现
- 行为型设计模式-模板方法模式
- C++成员变量的初始化顺序问题
- 网游的跨服玩法是如何实现的?“跨域体系”架构设计思路
- Oracle中timestamp时间戳的长度