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

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

 var num = 0;
document.write("num=" + num + "<br/>");
if (num) {
document.write("num不为0<br/>");
} else {
document.write("num为0<br/>");
}

我把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类型的变量
 var str = "";
document.write("<br/>str=" + str + "<br/>");
if (str) {
document.write("str有值<br/>");
} else {
document.write("str为空<br/>");
}
str = null;
//...
str = undefined;
//...
str = "Hello World!";
//...

执行结果为

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

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

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

 if (str) {
// 如果str不为空的操作
}
if (num) {
// 如果num不为0的操作
}

JavaScript判断变量值简单的方法的更多相关文章

  1. JMeter 中跨线程组 变量值传递的方法

    关于jmeter中跨线程组 变量值传递的方法         找了好久,终于找到方法了,赶紧整理下来. 1.在线程组1 中使用__setProperty函数设置jmeter属性值(此值为全局变量值), ...

  2. javascript 判断数据类型的几种方法

    javascript 判断数据类型的几种方法一.typeof 直接返回数据类型字段,但是无法判断数组.null.对象 typeof 1 "number" typeof NaN &q ...

  3. JavaScript,一个超级简单的方法判断浏览器的内核前缀

    先说明,此处的方法是说超级简单的方法,不是指代码超级少,而是用非常简单的知识点,只要懂得怎么写JavaScript的行内样式就可以判断. 大家应该还记得JavaScript行内样式怎么写吧?(看来我是 ...

  4. 两个变量值交换的方法总结(js,python)

    方法一: 临时变量法 <script> var num1 = 10; var num2 = 20; var temp;//定义临时变量 temp = num1; num1 = num2; ...

  5. 巧妙使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的好方法

    有无数的理由要求我们在任何时候都应该知道用户是使用的什么设备浏览我们的网站——宽屏,普通屏,平板,手机?知道这些特征,我们web应用的CSS和JavaScript才能同步做相应的操作.在给Mozill ...

  6. [TimLinux] JavaScript 判断 input checkbox选中的方法

    1. input属性 <label> <span>选择</span> <input type="checkbox" name=" ...

  7. JavaScript判断数据类型的4中方法

    一: typeof typeof 是一种运算符,它的值有如下几种(number.boolean.string.undefined.null.function.object.symbol) consol ...

  8. myeclipse debug不显示变量值解决的方法

    依次点击打开mycelipse菜单选项:"Window" - "Preferences" - "Java" - "Editor&q ...

  9. C#webbrowser控件技巧(取得javascript变量值,禁止显示脚本错误)

    C#中的webbrowser控件比较好用. 下面本人搜索整理的几个小技巧. 1. 从C#中取得javascript的变量值. using mshtml;using System.Reflection; ...

随机推荐

  1. atitit.闭包的概念与理解attilax总结v2 qb18.doc

    atitit.闭包的概念与理解attilax总结v2 qb18.doc 1.1. 闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.1 2. #---- ...

  2. Nokia 920板砖自救(理论上通用,升级Win10成板砖也可以用这个恢复)

    异常处理汇总 ~ 修正果带着你的Net飞奔吧! http://www.cnblogs.com/dunitian/p/4599258.html 个人博客:http://dnt.dkill.net 下载下 ...

  3. Android音视频之MediaPlayer音视频播放

    前言: 昨天总结了视频录制,今天来学习一下视频的播放,Android的视频播放主要采用MediaPlayer类. MediaPlayer介绍 MediaPlayer类可用于控制音频/视频文件或流的播放 ...

  4. ASP.NET WebAPi(selfhost)之文件同步或异步上传

    前言 前面我们讲过利用AngularJs上传到WebAPi中进行处理,同时我们在MVC系列中讲过文件上传,本文结合MVC+WebAPi来进行文件的同步或者异步上传,顺便回顾下css和js,MVC作为客 ...

  5. How to make a not-so-boring speech?

    For almost 26 years, even a trivial boy like me, have made over 100 and listened uncountable speeche ...

  6. iOS开发之多表视图滑动切换示例(仿"头条"客户端)---优化篇

    前几天发布了一篇iOS开发之多表视图滑动切换示例(仿"头条"客户端)的博客,之所以写这篇博客,是因为一位iOS初学者提了一个问题,简单的写了个demo做了个示范,让其在基础上做扩展 ...

  7. linux管理进程的链表

    linux2.6.11的内核中,为了方便管理linux的进程,主要建了5种linux链表.每个链表节点之间的互联有两种方式,一种是hash节点之间的互联,通过hlist_node的数据结构来实现:另一 ...

  8. Java多线程系列--“JUC锁”01之 框架

    本章,我们介绍锁的架构:后面的章节将会对它们逐个进行分析介绍.目录如下:01. Java多线程系列--“JUC锁”01之 框架02. Java多线程系列--“JUC锁”02之 互斥锁Reentrant ...

  9. Hammer.js分析(二)——manager.js

    “Manager”是所有识别器实例的容器,它为你设置的元素安装了交互事件监听器,并设置了触摸事件特性. manager.js中的代码会涉及到input.js和recoginzer.js中的内容,这里会 ...

  10. 数字限时增长效果实现:numberGrow.js

    这是上周工作中写到的一个功能,大概的效果就是页面中有几处数字,统计公司的一些业务信息,需要在第一次出现的时候,做一个从0开始增长,大概2秒自动增长到真实数值,并停止增长的效果.这个问题的重点在于解决如 ...