首页 > 试题广场 >

以下这段JavaScript程序的输出是什么?

[单选题]
以下这段JavaScript程序的输出是什么?
<SCRIPT LANGUAGE="JavaScript">
    var a="undefined";
    var b="false";
    var c="";
    function assert(aVar){
        if(aVar)      
            alert(true);
        else  
            alert(false);
    }
    assert(a);
    assert(b);
    assert(c);
</SCRIPT>

  • true,true,true
  • true,true,false
  • false,false,true
  • false,false,false
推荐
选B
变量abc都是字符串型的变量,而不是真正的undefined和false,在判断里都会被认为是真值,显示true,只有空串为false
编辑于 2015-01-28 10:11:55 回复(13)
var a="undefined", b="false", c="null", d="",e="0";
var f=undefined,g=false,h=null,i=0;
function assert(x) {
    if (x) {
        console.log("true");
    }
    else{
        console.log("false");
    }
}
console.log(assert(a));//true
console.log(assert(b));//true
console.log(assert(c));//true
console.log(assert(d));//false
console.log(assert(e));//true
console.log(assert(f));//false
console.log(assert(g));//false
console.log(assert(h));//false
console.log(assert(i));//false
console.log(assert(j));//false 
if(condition)的condition求值结果若非布尔值,ECMAScript会自动调用Boolean()转换函数将结果转换为布尔值。转换规则为:
数据类型        转换为true的        转换为false的
String        任何非空字符串          “”(空字符串)
Number    任何非零数值(包括无穷大)        0和NaN
Object        任何对象        null
undefined        --        undefined        

发表于 2016-02-09 19:12:43 回复(14)
数据类型 转换为true 转换为false
boolean true false
String 任何非空字符串 空字符串
Number 任何非零数字值 0和NaN
Object 任何对象 null
Undefined n/a undefined

发表于 2015-11-18 12:17:23 回复(1)
答案:B
unedfined和false都是Javascript的数据类型,但是用双引号引起了就不是本身类型了,这是字符串,空串相当于false,否则是true
发表于 2015-01-27 19:37:58 回复(0)
好不容易有道会的题,结果没认真看,选错选项了!!
发表于 2015-06-30 23:31:06 回复(0)
JavaScript里面的六种假值:false、0、''''、undefined、null、NaN。但是a和b、c是字符,c是空字符串,只有c才会走else分支,因此选B

编辑于 2018-07-15 08:30:38 回复(0)
这个坑挖的很不错,坦白讲,我中招了😂😂
发表于 2019-10-16 14:16:56 回复(0)
B,空字符串是false
发表于 2015-01-12 17:08:19 回复(0)
好题 这陷阱 被坑了 
B
发表于 2015-03-27 13:38:49 回复(0)
变量abc都是字符串型的变量,而不是真正的undefined和false,在判断里都会被认为是真值,显示true,只有空串为false
发表于 2015-09-21 15:52:14 回复(2)
千万不要看错,A,B都是字符串,而不是真正的undefined和false
发表于 2015-07-30 15:53:21 回复(0)
原来这道题是会做的全做错了
发表于 2021-10-25 13:04:13 回复(0)
我居然分不清"" 和 " "了🤣
发表于 2021-10-15 21:22:00 回复(0)
a和b加了“”代表的是字符并不是真正的undefined和false(布尔类型)
发表于 2020-05-18 09:14:10 回复(0)
a、b都是对象,判断时候肯定为真,空字符串为false
发表于 2018-07-15 10:40:12 回复(0)

var a="undefined";
var b="false";
var c="";

结果就是a,b,c进行逻辑运算,因为a,b为非空字符串所以alert(true),c为空字符串所以alert(false)

发表于 2017-11-15 22:28:57 回复(0)

JavaScript中有 6 个值为“假”,这六个值是

  1. false
  2. null
  3. undefined
  4. 0
  5. '' (空字符串)
  6. NaN

 

这里面 false 本身是布尔类型,其它 5 个则不是。

除了这 6 个外,其它均为“真” ,包括对象、数组、正则、函数等。注意 '0'、'null'、'false'、{}、[]也都是真值  。

发表于 2015-10-31 11:33:38 回复(0)
大意了,前两个都是字符串
发表于 2023-10-16 10:11:24 回复(0)
js中只有false,NaN,null,undefined,0,空字符串为假值(falsy),其他的都为真值,js在期待真值与假值的地方会进行自动类型转换
发表于 2023-09-20 10:27:30 回复(0)
因为前两个都是有值的字符串,所以会转化成true
发表于 2023-05-21 21:42:28 回复(0)
好家伙,全是字符串
发表于 2022-11-10 08:57:59 回复(0)