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者都是互等的。
分享到:
相关推荐
如果猜的数字大于随机数,会显示“你猜的数字大了”,反之则显示“你猜的数字小了”。然后调用`confirm()`函数询问用户是否继续游戏: ```javascript if (guess > num) { alert("你猜的数字大了"); go_on = ...
alert('恭喜,猜对了!'); } else { alert('很遗憾,猜错了。物品在' + hiddenItem + '位置'); } } ``` 这段代码展示了如何获取用户输入并比较,根据比较结果给出相应的提示。注意,实际应用中需要对用户输入...
alert('恭喜,你猜对了!'); } else if (guess ) { alert('太低了,再试一次吧。'); } else { alert('太高了,再来一局?'); } ``` 为了增加游戏的趣味性,我们可以添加计数器,记录玩家的猜测次数,当达到一定...
特点:将 a 和 b 先转换为二进制,按位操作,对应位置上的两个数字,相同时,该位整体结果为0,不同时,该位的整体结果为 1 使用场合:快速交换两个数字 5 ^ 3 101 011 ========== 110 结果为 6 练习: ...
为了得到0到100之间的整数,我们可以将结果乘以101,然后使用`Math.floor()`函数向下取整。这样确保了生成的数字始终在0到100之间,包括0和100。在代码中,这一步骤是这样的: ```javascript var Random = Math....
alert('恭喜,你猜对了!'); } ``` 4. **计数与限制**:为了限制猜测次数,我们可以设置一个变量记录尝试次数,并在每次猜测后递增。当达到最大次数时,显示游戏结束的信息: ```javascript let attempts = 0;...
这个游戏的目标是让用户在0到100的范围内猜一个随机生成的数字,直到猜对为止。 首先,我们需要了解JavaScript中的Math.random()函数,它是用来生成一个0到1之间(不包括1)的随机浮点数。为了生成指定范围内的随机...
`Math.floor()`函数用于将结果四舍五入到最接近的整数,因为`Math.random()`返回的是一个0到1(不包括1)之间的浮点数。 接着,我们需要设计用户输入的交互部分。这可以通过HTML构建用户界面,然后用JavaScript处理...
alert("恭喜你,猜对了!你共尝试了" + attempts + "次。"); } else if (userGuess ) { alert("太小了,请再试一次!"); } else { alert("太大了,请再试一次!"); } } ``` 在这个游戏中,JavaScript生成了一...
- 猜解表中的数据量:如`and (select count(*) from 表名) <> 0`。 - 猜解列的长度和具体内容:结合ASCII逐字解码法,通过比较ASCII码值进行猜解。 - 管理员信息的猜解:例如,管理员用户名和密码可以通过类似的...
alert("恭喜,你猜对了!"); } else if (userGuess ) { alert("太大了!"); } else { alert("太小了!"); } ``` 4. **循环游戏**: 为了使游戏循环进行,可以使用一个`while`循环,直到用户选择退出。每次...
alert("很遗憾,你没有猜对。正确答案是 " + randomNum); } ``` 最后,程序会引导用户进行一个更复杂的猜谜游戏,这一次用户有6次尝试机会。这可能涉及到更复杂的逻辑,比如创建一个对象数组来存储谜题和答案,...
弹出警告:alert(‘字符串’) 强调:1.js区分大小写 2.字符串单双引号不区分 [removed]标签:页面中专门集中编写JavaScript的区域 js的方法定义:function方法名([参数列表]){ 方法体 [return 返回值]...
在JavaScript中,`Math.random()`函数用于生成0到1之间(包括0但不包括1)的随机浮点数。为了在1到100之间生成整数,我们需要对结果进行适当的调整。例如: ```javascript let randomNumber = Math.floor(Math....
根据用户猜测的结果(过高或过低),程序会给出相应的提示,直到用户猜对为止。在JavaScript中实现这种游戏,我们可以充分利用其作为客户端脚本语言的特性,为用户提供即时反馈。 首先,我们要导入JavaScript的Math...
alert("恭喜,你猜对了!"); ``` 在这个猜数字游戏中,`Math.random()`用于生成1到100的随机数作为秘密数字,然后通过`prompt()`获取用户的猜测,直到猜对为止。 随机练习还可以扩展到更复杂的数据结构,比如数组...
alert('恭喜,你猜对了!'); } else if (guess ) { alert('太小了!'); score--; } else { alert('太大了!'); score--; } ``` 4. **循环与游戏状态**:为了使游戏持续进行,我们需要在用户猜错时允许他们...