今天在看一个动态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. CSS之flex布局

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  2. 2、Redis入门介绍

    1.什么是Redis Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数 ...

  3. multipart数据结构

    --[boundary]\r\n [headers]\r\n \r\n [content]\r\n --[boundary]\r\n [headers]\r\n \r\n [content]\r\n ...

  4. 对来自于Azure的远程连接文件(.rdp)的另一种更便捷的自定义方法

    在上一篇日志中(很抱歉那张比较黑的截图)介绍了如何获得Azure中的Windows虚拟机的远程连接文件,以及一种基于文本编辑方式进行自定义的方法. 实际上对于在Windows下的用户来说,我们可以使用 ...

  5. Java:IDEA下使用JUNIT

    JUnit单元测试--IntelliJ IDEA (本文转载自华行天下) 单元测试的基本使用 一.环境配置 使用idea IDE 进行单元测试,首先需要安装JUnit 插件. 1.安装JUnit插件步 ...

  6. MyEclipse打不开jsp文件 报错“Failed to create the part's controls"

    本来写好了一套网站html代码,需要移植到myeclipse的jsp页面中,当复制代码完毕后,也是可以运行的并不报错,但一直有弹框提示有空指针,当关闭页面后再次打开就歇菜了,提示 我预感到这可能是my ...

  7. Easyui datagrid行内【添加】、【编辑】、【上移】、【下移】

    前几天项目中遇到一个需求用到了Easyui datagrd行内添加和编辑数据,同时对行内数据上移下移,所以对这几个功能做个总结. 1.首先大概说下这几个功能里用到的主要方法,行内添加数据主要是添加列的 ...

  8. phpStorm入门

    首先在官网上下载并安装:http://www.jetbrains.com/phpstorm/; 安装成功后需要激活: IntelliJ IDEA开源社区 提供了如下通用激活方法: 注册时选择Licen ...

  9. APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例

    前言 继上篇环境篇后,本篇主要对TestNG进行介绍,给出最最基础的两个实例,通过本文后,学会并掌握TestNG测试用例的编写与运行,以及生成美化后的报告.下一篇为HTTP接口实战(国家气象局接口自动 ...

  10. Scala比较器:Ordered与Ordering

    在项目中,我们常常会遇到排序(或比较)需求,比如:对一个Person类 case class Person(name: String, age: Int) { override def toStrin ...