首页 > JavaScript > js:undefined,void
2009四月2

js:undefined,void

一直在用undefined,虽然我讨厌这个变量,因为它经常给我带来一些错误。偶尔写程序的时候alert调试了半天却发现有个变量未定义。

好吧。我承认,这其实是我的错,呵。

但是void我却从来不用,原因很简单,不会。

今天翻看“月影”的《王者归来》 才有所体会,原来这个void就是执行其内的表达式,但是却不返回,呵。很奇怪的东东。

然而,一知半解是人最大的怪癖,于是我翻开了《权威指南》,(SORRY,这个懒得找链接了)

void是一个一元运算符,用途比较特殊,(我感觉是毛病),它总是舍弃运算数的值,然后返回undefined。这种运算符常用在客户端的javascript:URL中。在这里可以计算表达式的值,而浏览器不会显示出这个值。

其另一个用途是专门生成一个undefined值。其定义在ECMAScript v1而undefined则是在ECMAScript v5中定义的。

所以考虑到向后兼容,作者认为void(0)比undefined属性更有用。

然而继续查阅发现undefined这个神奇的东东居然不是JS的保留字,而是一个特殊的全局变量,其初始值就是undefined。

因此可以给该变量赋值。。

如果无法确定你所使用的undefined是否被别人更改过,确保其值就是undefined(这句话真绕)。

只需要自己声明一个即可:var undefined;

只声明变量,并不初始化它,就可以确保其值是undefined。

唉,该死的undefined。。。

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/04/02/44/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

8 Responses to “js:undefined,void”

  1. #1 回复 | 引用 Post:2009-04-03 12:36

    小子兄弟,我们交换个链接吧,我已做好了。

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2009-04-03 12:38

    : 小子兄弟,我们交换个链接吧,我已做好了。

    呵,好的。我也做好了。呵,你发消息之前我就来做了。以后互相学习。

    [回复]

  3. #3 风也飘泊 回复 | 引用 Post:2009-04-03 13:18

    小子,链接已加好…(这句话怎么听起来像是要账的来了?)

    void?从没用过,除了加在空白链接的A标签上…

    [回复]

  4. #4 亚洲图博 回复 | 引用 Post:2009-04-03 13:39

    你这也忒深奥了,我只喜欢做点低俗的事,曲高和者寡

    [回复]

  5. #5 simaopig 回复 | 引用 Post:2009-04-03 15:04

    风也飘泊: 小子,链接已加好…(这句话怎么听起来像是要账的来了?)void?从没用过,除了加在空白链接的A标签上…

    呵,我的也加好了。就是刚才放错地方了。呵。

    [回复]

  6. #6 simaopig 回复 | 引用 Post:2009-04-03 15:04

    亚洲图博: 你这也忒深奥了,我只喜欢做点低俗的事,曲高和者寡

    低俗的东西大多好看。。

    [回复]

  7. #7 d 回复 | 引用 Post:2010-02-23 11:02

    我也用的是lz的解决方法,灵感是来自于那篇Google Closure的批判文,里面也提到undefined不是保留字

    [回复]

  8. #8 simaopig 回复 | 引用 Post:2010-02-23 11:30

    @d
    呵呵,因为undefined不是保留字,所以要想其值不被更改,最简单的方法就是声明一个未赋值的变量。。方便啊。 :smile:

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)