JavaScript判断变量值简单的方法

今天在看一个动态web表单设计器的时候发现项目中的 一个写法

1 function sum_total(v){
2     if (!v) {
3         v= 0;
4     }
5 }
!v  这是什么写法?不过可以肯定的是,这是一种判断变量值的方式,看样子应该是非类型判断,会不会是判断 变量v是否为0,如果不为0就给变量v赋值0。
带着这个疑问,我马上动手敲了几行js印证我的猜想
1 var num = 0;
2 document.write("num=" + num + "
"); 3 if (num) { 4 document.write("num不为0
"); 5 } else { 6 document.write("num为0
"); 7 }

我把num的值又改为了-1和1,对比结果为

 那么得出结论,变量类型为int:当 变量值 = 0时,返回值为false;当变量值 < 0变量值 > 0时,返回值为true
 

(那表单设计器中的代码   if (!v) v= 0; 写法就是多此一举了,当v = 0时,又给v赋值0,哈哈哈哈哈~被我给发现了~)
感谢@mgso的提醒~

@mgso
哥,那不是多此一举哟
如果v为null,undefinde,'',0...结果都是false
这里if(!v)的意思是:
如果v值没有传过来,设置v的值为0.等价于:
v || 0


 
嗯,验证了int类型的变量,那么再测试一下string类型的变量
 1 var str = "";
 2 document.write("
str=" + str + "
"); 3 if (str) { 4 document.write("str有值
"); 5 } else { 6 document.write("str为空
"); 7 } 8 str = null; 9 //... 10 str = undefined; 11 //... 12 str = "Hello World!"; 13 //...

执行结果为

JavaScript判断变量值简单的方法_第1张图片

 那么得出结论,变量类型为string:当 变量值 = ""变量值 = null变量值 = undefined时,返回值为false,当变量值 = "xxx"时,返回值为true

————————————————————华丽的分割线————————————————————

哈哈哈,有了这种写法,以后判断 数值是否为0 和 字符串值是否为空 就不用写成 if (num === 0) 或者 if (str === "" || str === undefined) 了!

1 if (str) {
2     // 如果str不为空的操作
3 }
4 if (num) {
5     // 如果num不为0的操作
6 }

 

你可能感兴趣的:(JavaScript判断变量值简单的方法)