从一道js笔试题到==运算符的简析

作者:afc163 来源:蓝色理想 时间:2010-05-10 20:28:00 

在cssrain整理的一个 试题集 中有这么一道题:

<SCRIPT LANGUAGE="JavaScript">
var a = 0;
var b = -1;
var c = 1;
function assert (aVar) {
if (aVar==true)     alert(true);
else     alert(false);
}
assert(a) ;
assert(b) ;
assert(c) ;
</SCRIPT>

运行代码框

按照我的理解,任何非0的数值的布尔值都应该为true。

可是这道题的正确输出为:false false true。

(-1==true)的值为false。

再来看下面这个例子:

<SCRIPT LANGUAGE="JavaScript">
var a = 0;
var b = -1;
var c = 1;
function assert (aVar) {
if (aVar)     alert(true);
else     alert(false);
}
assert(a) ;
assert(b) ;
assert(c) ;
</SCRIPT>

运行代码框

运行结果依次为:false,true,true。

在这里,我们发现,if(aVar) 和 if(aVar == true)的结果并不相同。

cssrain在 答案 中的解释是:

if(aVar) 和  if (aVar==true) 对负数有截然不同的答案。

真的是负数的原因吗?看下面这个例子:

运行代码框


为什么正数2返回的也是false呢。我们将数字转换为boolean值看看。

运行代码框


这里非0数值的布尔值的确都是true,也就是说所有的问题都集中在2==true中的==运算符上。基本可以确定,==一定不是把数字转换为布尔值再进行比较。

标签:js,运算符,试题
0
投稿

猜你喜欢

  • .net新兴日志框架Serilog简介

    2023-06-28 16:20:05
  • Django之模板层的实现代码

    2022-11-10 11:40:54
  • MySql安装与配置方法(MySQL添加用户、删除用户与授权)

    2024-01-25 07:25:01
  • Golang中如何对MySQL进行操作详解

    2024-01-28 23:16:53
  • Python中函数的多种格式和使用实例及小技巧

    2022-12-18 10:22:32
  • SQL SERVER2012中新增函数之字符串函数CONCAT详解

    2024-01-23 18:15:23
  • 利用Anaconda完美解决Python 2与python 3的共存问题

    2022-05-16 17:51:43
  • python三元运算符实现方法

    2022-08-19 23:11:34
  • Python中列表、字典、元组、集合数据结构整理

    2022-08-02 05:54:57
  • 创建mysql表分区的方法

    2024-01-16 11:48:37
  • python3 中使用urllib问题以及urllib详解

    2022-01-09 05:59:16
  • JSP页面传参出现中文乱码的解决方案

    2023-06-13 12:53:03
  • 纯Javascript实现Windows 8 Metro风格实现

    2024-04-19 10:41:31
  • javascript跨域刷新实现代码

    2024-04-16 08:46:37
  • Python Django 数据库的相关操作详解

    2024-01-26 21:02:46
  • SQL Server 2005日志文件损坏的处理方法

    2008-12-02 14:36:00
  • js添加千分位的实现代码(超简单)

    2023-08-25 07:43:29
  • 利用sql函数生成不重复的订单号的代码

    2012-01-05 19:02:55
  • pytorch训练时的显存占用递增的问题解决

    2021-04-20 07:12:45
  • python把ipynb文件转换成pdf文件过程详解

    2022-07-27 23:50:24
  • asp之家 网络编程 m.aspxhome.com