vbs中Empty和Null的区别

empty关键字指用于指明未初始化的变量值,与NULL不同
NULL关键字指用于指明变量包含的数据无效,与empty不同
实例:
dim p
'此时, 
isempty(p) 为 true
isNull(p) 为 null
再例如,在在数据库里读出记录的一个的某个字段ppp值是 null ,该字段没有数据
p=rs("ppp")
此时 isNull(p)=true
再说一个容易模糊的东东(可能也是大家费解的地方)
vbs 在没有option explicit时允许不声明变量就使用变量赋值
如 没有dim p 而直接
p="aaa" 第一次遇上时就会隐式的去定义变量p,可能在这儿产生费解,
-------------
其一:
dim p
isempty(p) 为 true
isNull(p) 为 false
显示定义了变量
---------------
其二:
isempty(p) 为 true
isNull(p) 为 false
必须在没有强制声明option explicit的前提下,否则程序不允许继续运行
隐式的定义变量,隐式定义发生在第一次对变量的使用
当没有显式的dim p时,第一次使用p 时就会实际的 运行机制==>
isempty(p)
(搜索函数作用域,没有定义,再搜索全局作用域,也没定义!!ok 先定义一下 dim p)
然后再
isempty(p)
实际就是
isempty(p) 
--->
( p ? ----> no dim p ----> dim p ) 
---->
isEmpty(p)
isNull(p)
所以程序的处理结果 isNull(p)==false 而不是 true
null 不太好抓住它,怎么判断他?
-------
p=null 
isNull(p)=true
现在奇怪,怎么p是初始化了,怎么又isNull(p)=true,因为发生在将 null 赋给 p,用 p变量代表不存在的数据
更明确的说,此时用“啥也没有的东西”由p来表示
--------
那什么时候才有isnull 为 true 哩?
例如在发生数据库对象数据调用时有出现,数据库的列允许 null 
(更糟糕的是!!SQL server2000里的中文翻译null此时又称其叫“空值”,糊涂,所有原因发生在翻译上,所以要多用,才能理解empty,null真正的区别,不要在汉字翻译上去混淆,而且不同的语言对null empty的处理有有些差别)
“真空”可以叫empty
而null 连“真空”也没有
这本身是两个很抽象的概念!!
再举一个例子以加深Null 和Empty 的认识
如下有两个表,A表有三个记录,均有实际数据,B表有两个记录,第二个记录“B字段1”
是空字符;A表和B表的 aID bID 都是自动编号的字段,不允许填充Null
表A | 表B
__________________ |________________________________
aID A字段 | bID B字段 
1 AAA1 | 1 BBB1
2 AAA2 | 2 
3 AAA3 | 
___________________________________________________
由aID和bID限定A left outer Join B 的结果
(select * From A left join B on A.aID=B.bID)
___________________________________________________
aID A字段1 bID B字段1 
1 AAA1 1 BBB1
2 AAA2 2 
2 AAA2 3 Null
___________________________________________________
分析上面的结果:
A left join B是强制B表匹配 A表输出记录集,不管B表的bid是否存在于A表中!
这样一来,B表的 bid=1 bid=2均匹配 A的 aID=1 aID=2,于是bID的相应数据原样出现在结果集中!
而记录号 bID=3 的记录在 B表不存在,有于要求强制匹配入联合结果集,此时基于on A.aid=B.bID 的条件,就用 B.bid=A.aID 出现在B表的联合输出结果列,而“B字段1”的
第三个记录不存在,此时联合结果集中就只能是标识为 null ---//不存在的数据//
而记录2的空字符则继续填充为空字符号
通过这个例子咳一看到 null 使用上的真正含义
空字符在数据中,相当于有一个空的座位
而null 就连这个空的座位也没有
再例:
1:AAA 2: BBB 3: 4:DD ' 3: 的地方是Empty
1:AAA 2:BBB 4:DD '连标明座位号的3: 都没有,那儿就是一个null

(0)

相关推荐

  • ASP中Null,Empty,Nothing的区别分析

    本文介绍在ASP中,NULL,Empty,Nothing这几种空值的来源和判断方法. Dim   A   Dim   B   As   String   Dim   C   As   Integer   Dim   D   As   Object A  等于 Empty,因为尚未初始化的「不定型变量」都等于 Empty.但如果检测 A = "" 或 A = 0,也都可以得到True 值.   B  等于   "", 因为尚未初始化的非固定长度「字串」都等于 &quo

  • asp.net中DBNull.Value,null,String.Empty区别浅析

    首先,"null"是C#中(VB.NET为Nothing),表示某个引用对象变量"未引用"任何实体时候的状况(典型症状是如果调用这个变量的某个方法,会抛出NullException之类的异常). String.Empty是一个静态的公共变量,表示某String变量不包含任何字符(等同于"").不过从性能上说,用String.Empty比声明用一个""好一些--显然地,前者是String类的静态变量,无论如何使用只产生一个实例,

  • ASP 空字符串、IsNull、IsEmpty区别分析

    说明:set aa=server.createobject("ddd") isnull 说明指针为空,指针指到一个无效的位置,即对象不存在, isempty 说明指针指向一个有效位置,但是值为空 1.空字符串 例: 复制代码 代码如下: a)Dim strTmp response.write(strTmp="") ' 返回true b)response.write(str="") ' 返回 true c)Dim strTmp strTmp=&qu

  • asp.net String.Empty NULL 不同之处

    本文就它们彼此的不同之处做一粗略说明. string.Empty就相当于"" 一般用于字符串的初始化 比如: string a; Console.WriteLine(a);//这里会报错,因为没有初始化a 而下面不会报错: string a=string.Empty; Console.WriteLine(a); 或者用于比较: if(a=="") if(a==string.Empty) 上面两句是一样的效果. string.Empty不分配存储空间 "&q

  • asp.net String.IsNullOrEmpty 方法

    此方法在 .NET Framework 2.0 版中是新增的. 指示指定的 String 对象是 空引用(在 Visual Basic 中为 Nothing) 还是 Empty 字符串. 这个方法在VB,VB.Net, C#,C++,JScript,J#中都有,很好很强大的一个方法. String.Empty 字段 表示空字符串.此字段为只读. 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 语法 Visual Basic(声明) Public Shared

  • vbs中Empty和Null的区别

    empty关键字指用于指明未初始化的变量值,与NULL不同 NULL关键字指用于指明变量包含的数据无效,与empty不同 实例: dim p '此时,  isempty(p) 为 true isNull(p) 为 null 再例如,在在数据库里读出记录的一个的某个字段ppp值是 null ,该字段没有数据 p=rs("ppp") 此时 isNull(p)=true 再说一个容易模糊的东东(可能也是大家费解的地方) vbs 在没有option explicit时允许不声明变量就使用变量赋

  • C#中string.Empty和null的区别详解

    这是一个及其常见的问题,网上已经有关于这个问题的很多讨论.但是我觉得都是不求甚解,有一些还是在误导别人.下面我来说下我对这三者的理解,如有错误的地方请大家及时指正. 一:""与string.Empty我认为是一样的.网上有一篇被转载了几十遍的文章是这样说的string.Empty 不分配存储空间,"" 分配一个长度为空的存储空间,我认为这句话是错误并且含糊不清的. 1.实际上Empty是string类中的一个静态的只读字段,他的定义是这样的: public stat

  • JavaScript中undefined和null的区别

     JavaScript中undefined和null的区别 JavaScript两个表示"无"的值:undefined和null.我在平时只是null用的多一点,undefined只是在报错中经常遇到.下面针对这两个数据类型的异同做一下详细的比较. 1.undefined和null在if语句中,都会被自动转为false,相等运算符直接报告两者相等. !null==!undefined==true 2.null表示"没有对象",即该处不应该有值.典型用法是: (1)

  • VBS中Run和Exec的区别

    Set ws = CreateObject("WScript.Shell") '这里创建一个对象引用,以便在以下示例代码中使用. 'Demon注:这个变量名怎么这么猥琐(WS) 语法:(常识(Demon注:常识这个词我喜欢):作为过程使用时,不要加括号,否则出现编译器错误(参数唯一或没有时加括号不会出错,但建议不要加)) 复制代码 代码如下: ws.Run(strCommand, [intWindowStyle], [bWaitOnReturn]) [Set objExec =] ws

  • C++中nullptr 和 NULL 的区别及用法

    1. 为什么会有nullptr的出现 目的:nullptr的出现主要是为了替代NULL. 那么,为什么要替代NULL呢? 在NULL的定义中存在会有2种方式,有的编译器会将NULL定义成0,有的编译器会将NULL定义成((void*)0). 那么,这两种定义方式会对c++有什么区别呢? 在c++中不允许( void* )隐式的转成其他类型,在某些编译器把NULL定义成((void*)0)的情况下,当你定义变量去赋值NULL时候,NULL就会变定义为0. 另外,这种问题也会对c++的重载特性造成混

  • 一文让你彻底弄懂js中undefined和null的区别

    目录 前言 一.基本概念 1.undefined 2.null 二.简单区别 三.表现形式 1.typeof 2.==与=== 3.Object.prototype.toString.call 4.+运算与Number() 5.JSON.stringify 6.letundefiend='test' 四.建议 附:null在类型判断时为什么是object 总结 前言 undefined 和 null 的区别是个老生常谈的话题了,之前我对二者的区别只是简单理解,例如二者转成 Boolean 类型都

  • javascript中undefined与null的区别

    大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil. 有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null.这是为什么? 一.相似性 在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别. var a = undefined; var a = null; 上面代码中,a变量分别被赋值为undefin

  • 详解JavaScript中undefined与null的区别

    有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null.这是为什么? 一.相似性在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别. 复制代码 代码如下: var a = undefined;var a = null; 上面代码中,a变量分别被赋值为undefined和null,这两种写法几乎等价.undefined和null在if语句中,都会被自动转为false,相等运算符甚至直接报告两者相等. 复制代码

  • PHP中 empty() 和 isset() 的区别介绍

    目录 二者共同点 二者区别 1.对于未设置的变量的判断 2.对于 "" (空字符串) 的判断 3.对于 0 (作为整数的0) 的判断 4.对于 0.0 (作为浮点数的0) 的判断 5.对于 "0" (作为字符串的0) 的判断 6.对于 NULL 的判断 7.对于 FALSE 的判断 8.对于 array() (一个空数组) 的判断  二者共同点 都可以判定一个变量是否为空: 都返回boolean类型,即true或false. 二者区别 empty() 函数用于检查一

  • javascrit中undefined和null的区别详解

    1.Undefined Undefined 类型只有一个值,即特殊的undefined.根据工作中总结,只要有这几种情况下会出现undefined. 1.定义变量,但是没有初始化时,如var a: 2.调用某个函数时,实参个数小于形参个数时,未实参化的形参在函数调用过程中的值是undefined: 3.调用某个对象还没有添加的属性时,也会返回undefined: var obj={} console.log(obj.name);//undefined 4.调用某个没有返回值的函数,也会返回und

随机推荐