Javascript 如何检查JS中的值是否为null和非空字符串
在Javascript中是否有检查值是否为null和空字符串?我正在使用下面的一个:Javascript 如何检查JS中的值是否为null和非空字符串,javascript,Javascript,在Javascript中是否有检查值是否为null和空字符串?我正在使用下面的一个: var data; //get its value from db if(data != null && data != '') { // do something } 但我想知道是否还有更好的解决办法。谢谢。如果您确实想确认某个变量不是null,也不是空字符串,您可以这样写: if(data !== null && data !== '') { // do so
var data; //get its value from db
if(data != null && data != '') {
// do something
}
但我想知道是否还有更好的解决办法。谢谢。如果您确实想确认某个变量不是null,也不是空字符串,您可以这样写:
if(data !== null && data !== '') {
// do something
}
请注意,我更改了代码以检查类型是否相等(!=
|==
)
但是,如果您只是想确保代码只针对“合理”值运行,那么您可以如其他人所述编写:
if (data) {
// do something
}
因为,在javascript中,null值和空字符串都等于false(即null==false
)
这两部分代码之间的区别在于,对于第一部分,每个不是专门为null或空字符串的值都将输入
if
。但是,在第二种情况下,每个true-ish值都将输入if
:false
,0
,null
,未定义的和空字符串,而在JS中都不是假值。所以,
if (data) { ... }
这完全足够了
不过还有一点需要注意:我会避免在代码中使用可能以不同类型显示的变量。如果数据最终将是一个字符串,那么我将首先用一个空字符串定义我的变量,因此您可以这样做:
if (data !== '') { ... }
没有空值(或任何奇怪的东西,如data=“0”
)的阻碍。空值和空值都可以按如下方式进行验证:
<script>
function getName(){
var myname = document.getElementById("Name").value;
if(myname != '' && myname != null){
alert("My name is "+myname);
}else{
alert("Please Enter Your Name");
}
}
函数getName(){
var myname=document.getElementById(“名称”).value;
如果(myname!=''&&myname!=null){
警报(“我的名字是”+我的名字);
}否则{
警告(“请输入您的姓名”);
}
}
试试看----------
函数myFun(){
var inputVal=document.getElementById(“inputId”).value;
如果(输入值){
document.getElementById(“结果”).innerHTML=“值为”+inputVal+”;
}
否则{
document.getElementById(“结果”).innerHTML=“发生错误!输入可能为空。”;
}
}
而不是使用
if(data !== null && data !== '' && data!==undefined) {
// do something
}
您可以使用下面的简单代码
if(Boolean(value)){
// do something
}
- 直观上为“空”的值(如0、空字符串、null、未定义和NaN)将变为false
- 其他价值观变为现实
我经常测试truthy值以及字符串中的空格:
if(!(!data || data.trim().length === 0)) {
// do something here
}
如果你有一个由一个或多个空格组成的字符串,它的计算结果将为true。我已经厌倦了专门检查空字符串和空字符串,所以我现在通常只编写并调用一个小函数来完成这项工作
/**
* Test if the given value equals null or the empty string.
*
* @param {string} value
**/
const isEmpty = (value) => value === null || value === '';
// Test:
isEmpty(''); // true
isEmpty(null); // true
isEmpty(1); // false
isEmpty(0); // false
isEmpty(undefined); // false
?。
将短路并返回未定义的
,如果数据是空的
(空的
或未定义的
),这将在if
表达式中计算为false。当我们在本质上编码为空时,在给定的情况下可能意味着以下任何一种情况
- 数值为0
- 0.0作为浮点值
- 字符串值中的“0”
- 字符串值中的“0.0”
- null作为null值,它也可能捕获未定义的,也可能不捕获
- 未定义为未定义的值
- 假如假,假如假,假如假,假如假如假,假如假如假,但如果我们想抓住假如假呢
- “”为空,没有空格或制表符
- “”字符串,仅带空格或制表符
在实际生活中,如OP所述,我们可能希望测试所有这些条件,或者有时我们可能只希望测试有限的条件集
通常如果(!a){return true;}
在大多数情况下都能满足其目的,但是它不会覆盖更广泛的条件集
另一个成功的黑客是return(!value | | value==undefined | | value==“”| | value.length==0)代码>
但如果我们需要控制整个过程呢
本机核心JavaScript中没有简单的挥鞭式解决方案,必须采用。考虑到我们放弃了对传统IE11的支持(老实说,即使是windows也应该这样做),这一解决方案在所有现代浏览器中都能奏效
function empty (a,b=[])
{if(!Array.isArray(b)) return;
var conditions=[null,'0','0.0',false,undefined,''].filter(x => !b.includes(x));
if(conditions.includes(a)|| (typeof a === 'string' && conditions.includes(a.toString().trim())))
{return true;};
return false;};`
解决方案is函数背后的逻辑有两个参数a和b,a是我们需要检查的值,b是一个带有设置条件的数组,我们需要从上面列出的预定义条件中排除。默认值b设置为空数组[]
函数的第一次运行是检查b是否为数组,如果不是,则提前退出函数
下一步是从[null、'0'、'0.0',false、undefined',]
和数组b计算数组差。如果b是空数组,则预定义条件将保持不变,否则它将删除匹配值
条件=[预定义集]-[待排除集]
过滤器功能正是利用了它。
现在我们在数组中设置了条件,我们需要做的就是检查值是否在条件数组中。
includes函数完全不需要编写自己的讨厌循环,让JS引擎来完成繁重的工作
明白了
若我们要将一个字符串转换为一个字符串进行比较,那个么0和0.0将正常运行,但Null和Undefined会通过错误阻塞整个脚本。我们需要边缘案例解决方案。下面简单的|覆盖了第一个条件不满足时的边缘情况。如果未满足要求,运行另一个提前检查通过include将提前退出
if(conditions.includes(a)|| (['string', 'number'].includes(typeof a) && conditions.includes(a.toString().trim())))
trim()函数将覆盖更宽的空白和制表符值,并且仅在边缘情况下起作用
操场
函数为空(a,b=[]){
如果(!Array.isArray(b))返回;
条件=[null,'0','0.0',false,未定义,'].filter(x=>!b.includes(x));
如果(条件)包括(a)|
(['string','number'].includes(a的类型)和&conditions.includes(a.toStri
if(conditions.includes(a)|| (['string', 'number'].includes(typeof a) && conditions.includes(a.toString().trim())))
const value = null;
if(!value) {
console.log('value is either null, undefined or empty string');
}