`
energykey
  • 浏览: 597476 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

你猜alert(''==0)的结果会是什么?

阅读更多
Javascript 中的false,零值,null,undefined和空字符串对象

在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象--false、0、空字符串、null和undefined。这几个对象很容易用错,因此在使用时必须得小心。

类型检测
我们下来看看他们的类型分别是什么:

<script type="text/javascript">
    alert(typeof(false) === 'boolean');
    alert(typeof(0) === 'number');
    alert(typeof("") === 'string');
    alert(typeof(null) === 'object');
    alert(typeof undefined === 'undefined');
</script>
运行上述代码,弹出的对话框应该显示的都是true。也就是说,false是布尔类型对象,0是数字类型对象,空字符串是字符串类型对象,null是object对象,undefined类型还是undefined。

互等性
当你用==操作符将false对象和其他对象进行比较的时候,你会发现, 只有0和空字符串等于false;undefined和null对象并不等于false对象,而null和undefined是相等的

<scripttype="text/javascript">
    alert(false == undefined);
    alert(false == null);
    alert(false == 0);
    alert(false == "");
    alert(null == undefined);
</script>
我们可以把0、空字符串和false归为一类,称为"假值";把null和undefined归为一类,称为"空值"。假值还算一个有效的对象,因此可以对其使用toString等类型相关的方法,而空值则不行。下面的代码将会抛出异常:

<scripttype="text/javascript">
    alert(false.toString());    // "false"
    alert("".charAt(0));        // ""
    alert((0).toExponential(10));  // 0.0000000e+0
    alert(undefined.toString());    // throw exception "undefined has no properties"
    alert(null.toString());             // "null has no properties"
</script>
字符串表示
虽然空值不能调用toString方法,但是却可以使用String构造函数进行构造。 像decodeURI这样的函数,如果传入的是undefined或者null,返回的是"undefined"和"null"字符串 。这点很容易用错。

<script type="text/javascript">
    alert(String(false));    // "false"
    alert(String(""));        // ""
    alert(String(0));  // 0.0000000e+0
    alert(String(undefined));    // "undefined"
    alert(String(null));             // "null"

    alert(decodeURI(undefined));// "undefined"
    alert(decodeURI(null));// "null"
</script>
假值和空值作为if条件分支
假值和空值有一个共性,那就是在 作为if的条件分支时,均被视为false ;应用"!"操作之后得到的均为true 。如下示例代码:

<scripttype="text/javascript">
    var ar = [undefined,false,0,"",null];
    for(var i = 0,len = ar.length; i < len; i++){
        if(ar[i]){
            alert("你不应该看到此对话框!");
        }
    }
</script>
这是因为,这几个对象均被视为各自类型中的无效值或空值。因此if分支中这些对象均被视为false对待。

null和undefined的区别
这两个空值的区别也是容易混淆的。

undefined和null对象无非是两个特殊对象,undefined表示无效对象,null表示空对象。如果变量显式或者隐式(由Javascript引擎进行赋值)地被赋予了undefined,那么代表了此变量未被定义,如果被赋予null值,则代表此变量被初始化为空值。

在Javascript中,变量是通过var声明,=赋值符进行定义(初始化变量所指向的对象)。当然,如果声明一个全局变量(作为window属性)可以不使用var关键字。变量可以在声明的同时进行定义。


说到最后,你是否已经明白alert(''==0)的结果为什么会是true了?如果你延伸一下,就会发现''==0==false 这3者都是互等的。
0
1
分享到:
评论
1 楼 yilong511 2009-12-26  
长知识了,javascript一直对null和undefine的区别不清楚

相关推荐

    【JavaScript源代码】js实现弹窗猜数字游戏.docx

    如果猜的数字大于随机数,会显示“你猜的数字大了”,反之则显示“你猜的数字小了”。然后调用`confirm()`函数询问用户是否继续游戏: ```javascript if (guess &gt; num) { alert("你猜的数字大了"); go_on = ...

    javascript经典特效---猜物品所在地方.rar

    alert('恭喜,猜对了!'); } else { alert('很遗憾,猜错了。物品在' + hiddenItem + '位置'); } } ``` 这段代码展示了如何获取用户输入并比较,根据比较结果给出相应的提示。注意,实际应用中需要对用户输入...

    猜:猜数字游戏

    alert('恭喜,你猜对了!'); } else if (guess ) { alert('太低了,再试一次吧。'); } else { alert('太高了,再来一局?'); } ``` 为了增加游戏的趣味性,我们可以添加计数器,记录玩家的猜测次数,当达到一定...

    javascript入门笔记

    特点:将 a 和 b 先转换为二进制,按位操作,对应位置上的两个数字,相同时,该位整体结果为0,不同时,该位的整体结果为 1 使用场合:快速交换两个数字 5 ^ 3 101 011 ========== 110 结果为 6 练习: ...

    JS实现网页端猜数字小游戏

    为了得到0到100之间的整数,我们可以将结果乘以101,然后使用`Math.floor()`函数向下取整。这样确保了生成的数字始终在0到100之间,包括0和100。在代码中,这一步骤是这样的: ```javascript var Random = Math....

    Number Guessing Game in JavaScript Free Source Code.zip

    alert('恭喜,你猜对了!'); } ``` 4. **计数与限制**:为了限制猜测次数,我们可以设置一个变量记录尝试次数,并在每次猜测后递增。当达到最大次数时,显示游戏结束的信息: ```javascript let attempts = 0;...

    JavaScript实现猜数字游戏

    这个游戏的目标是让用户在0到100的范围内猜一个随机生成的数字,直到猜对为止。 首先,我们需要了解JavaScript中的Math.random()函数,它是用来生成一个0到1之间(不包括1)的随机浮点数。为了生成指定范围内的随机...

    猜数字:允许用户猜数字并检查是否是计算机的实际猜测的游戏

    `Math.floor()`函数用于将结果四舍五入到最接近的整数,因为`Math.random()`返回的是一个0到1(不包括1)之间的浮点数。 接着,我们需要设计用户输入的交互部分。这可以通过HTML构建用户界面,然后用JavaScript处理...

    Twitter bootstrap data table.zip

    alert("恭喜你,猜对了!你共尝试了" + attempts + "次。"); } else if (userGuess ) { alert("太小了,请再试一次!"); } else { alert("太大了,请再试一次!"); } } ``` 在这个游戏中,JavaScript生成了一...

    Access数据库注入高级玩法[参考].pdf

    - 猜解表中的数据量:如`and (select count(*) from 表名) &lt;&gt; 0`。 - 猜解列的长度和具体内容:结合ASCII逐字解码法,通过比较ASCII码值进行猜解。 - 管理员信息的猜解:例如,管理员用户名和密码可以通过类似的...

    GuessMyNumber:一个非复杂的游戏,猜测一个随机数

    alert("恭喜,你猜对了!"); } else if (userGuess ) { alert("太大了!"); } else { alert("太小了!"); } ``` 4. **循环游戏**: 为了使游戏循环进行,可以使用一个`while`循环,直到用户选择退出。每次...

    class02

    alert("很遗憾,你没有猜对。正确答案是 " + randomNum); } ``` 最后,程序会引导用户进行一个更复杂的猜谜游戏,这一次用户有6次尝试机会。这可能涉及到更复杂的逻辑,比如创建一个对象数组来存储谜题和答案,...

    JavaScript笔记

    弹出警告:alert&#40;‘字符串’&#41; 强调:1.js区分大小写 2.字符串单双引号不区分 [removed]标签:页面中专门集中编写JavaScript的区域 js的方法定义:function方法名([参数列表]){ 方法体 [return 返回值]...

    guessing-game

    在JavaScript中,`Math.random()`函数用于生成0到1之间(包括0但不包括1)的随机浮点数。为了在1到100之间生成整数,我们需要对结果进行适当的调整。例如: ```javascript let randomNumber = Math.floor(Math....

    猜数游戏

    根据用户猜测的结果(过高或过低),程序会给出相应的提示,直到用户猜对为止。在JavaScript中实现这种游戏,我们可以充分利用其作为客户端脚本语言的特性,为用户提供即时反馈。 首先,我们要导入JavaScript的Math...

    随机-另一种:随机练习

    alert("恭喜,你猜对了!"); ``` 在这个猜数字游戏中,`Math.random()`用于生成1到100的随机数作为秘密数字,然后通过`prompt()`获取用户的猜测,直到猜对为止。 随机练习还可以扩展到更复杂的数据结构,比如数组...

    GuessMyNumber

    alert('恭喜,你猜对了!'); } else if (guess ) { alert('太小了!'); score--; } else { alert('太大了!'); score--; } ``` 4. **循环与游戏状态**:为了使游戏持续进行,我们需要在用户猜错时允许他们...

Global site tag (gtag.js) - Google Analytics