CreateTime--2017年2月16日14:11:35
Author:Marydon

非空判断与是否存在
UpdateTime--2017年7月13日16:27:29

1.取值问题

使用javascript进行页面取值,获取到的值只会是字符串string类型;

如果页面上不存在该元素,运行js时会直接报错。

使用jQuery进行页面取值时,获取到的值的类型只能有两种:string、undefined。

如果页面上存在该元素,返回的是字符串;如果页面上不存在该元素,返回的是undefined。

使用js将null值赋到页面上时,赋的值其实是空字符串""; 

从数据库查询数据,若字段是日期类型,字段值为空且SQL、java未将日期类型转换成字符串的情况下,返回的是null,是否存在判断用==null;

字段为字符串类型且为空,返回的是空字符串"";

通过JSON对象根据不存在的键取值时,返回的是undefined。

2.判断值是否为空



var keyVal= $("#key").val(); 
if(null==keyVal || ""==keyVal){ 
    alert("隐藏域的值为空"); 
}



  注意:

    不要使用string.length == 0 判断,如果返回的是undefined,会直接报错,因为undefined没有.length属性。

3.是否存在判断

  UpdateTime--2017年6月30日07:20:51

  js在作是否存在判断时,有两种方式:

  方式一:不声明!=null或==null



/*非空判断*/
if (variable) {
  //要执行的语句  
}
/*为空判断*/
if (!variable) {
  //要执行的语句  
}



  不适用场景:

当variable=0时,if (variable) {},不进该if语句(但是,应该进if判断),更多内容见文章-javascript对于0的解读;

 当variable=""时,if (variable) {},不进该if语句,但是该进if语句;



if (undefined == null) {
    alert("执行");
}
if (undefined) {
    alert("不执行");
}



js判断某值是否存在可以使用if(param){},java中不能使用这种判断方法,java中类似这样的使用场景,仅用于boolean类型判断

  JAVA举例:



boolean flag = false;
/*boolean类型判断*/
// 方式一:只能用于boolean类型判断
if (flag) {
    
}
// 方式二
if (flag == true) {
    
}
// 这两种方式都对,都表示当flag=true时走if语句,只不过前者是对后者的简化



/*不能用于非空判断*/
String str = "测试非空判断";
// 编译直接报错
if (str) {
    
}
// 只能使用这种方式
if (null != str) {
    
}



  方式二:声明!=null或==null 



/*非空判断*/
if (null != variable) {
  //要执行的语句  
}
/*为空判断*/
if (null == variable) {
  //要执行的语句  
}



  注意:

当variable=undefined时,直接用==null或!=null判断即可。如果是非空判断,不进if语句;若是为空判断,进if语句。  

举例:



var aa = 1;
if (aa) {
    alert("tan")
}
/*当aa存在为0的情况时,进行的非空判断*/
aa = 0;
// 必须使用这种方式
if (null != aa) {
    alert("tan")
}
// 不能使用这种方式
if (aa) {
    alert("不弹");
}



  UpdateTime--2017年7月12日08:12:13

  小结: 

方式a通常用于判断方法参数是否存在(if-else语句),举例:



this.showMessage = function(title, url, width, height, type) {
        var object = this;
        this.Title = title ? title : "无标题";
        this.Width = width ? width : 500;
        this.Height = height ? height : 300;
}



三元运算符判断是if-else语句的变形方式之一,更多变形见文章:if-else用法  

UpdateTime--2017年7月26日17:24:08

总结:

  是否存在判断



/**
 * 是否存在判断
 */
if (null != variable) {
    // 要执行的操作
}



  非空判断

  情景一:



/**
 * 非空判断(不确定变量是否存在或变量值可能为undefined)
 */
if (null != variable && "" != variable) {
    // 要执行的操作
}



  情景二: 



/**
 * 非空判断(变量值只有两种可能:空字符串"";非空字符串)
 */
if ("" != variable) {
    // 要执行的操作
}