请问TT是什么啊,令人抓狂,出自我同事考我的一个变态题目

Go_Rush 2006-10-08 10:43:25
加精
请定义一个变量 tt, 让tt满足下面的代码.

代码执行完毕后 ,errCount=0 而且 断言函数也从未 alert 信息

<script>

var tt=/*这里怎么定义tt啊*/;

var errCount=0 //全局变量,用来记录 assert 函数出现断言宣告的次数

/*
断言函数
如果v为假,该函数就 alert("assert error"),并累加计数器 errCount
如果v为真,就什么也不做
*/
function assert(v) {
if (!v) {
alert("assert error");
errCount++;
}
}

assert((tt || true) == false)
assert((tt || false) == false)
assert((tt && true) == true)
assert((tt && false) == false)
assert((true || tt ) == true)
assert((tt || true ) == false)
assert((false || tt ) == false)
assert((tt || false ) == false)
assert((true && tt) == false)
assert((tt && true ) == true)
assert((false && tt ) == false)
assert((tt && false ) == false)

assert((tt ? true : false) == true)
assert((tt == false) == true)
assert((!tt == tt ) == true)
assert((tt + '') == "false")
assert(tt == false)


alert(errCount) //结果是打印 0

</script>
...全文
4398 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
wawaku 2007-01-30
  • 打赏
  • 举报
回复
Mark
qltouming 2006-12-04
  • 打赏
  • 举报
回复
蛮好玩的,Mark一下
hax 2006-11-27
  • 打赏
  • 举报
回复
这个题目有够无聊的。归根结底是因为js先天的问题,即把java的primitive和object分离了,才会有new Boolean()这样的怪胎。JavaScript 2.0 (ECMAScript 4.0标准)将会修正这个问题,届时,上述的代码无论如何都不能得到0个了(除非hack之)。
mrshelly 2006-11-14
  • 打赏
  • 举报
回复
TT 不是传说中的“套套”吗?
Apq001 2006-10-26
  • 打赏
  • 举报
回复
var tt;
就等价于:
var tt = undefined;
undefined自动转为字符串时为"undefined"
同时,undefined是6大无意义之一,当然就会错好多次了。

==
TO 楼上:
看帖要仔细,答案早就有了,难是难了点,但解释我也给出了。
回帖前尽量看看别人的回答,这才是CSDN之道。
PopKaven 2006-10-25
  • 打赏
  • 举报
回复
如果要求是0的话就难办了,javascript会自动转换与它作运算的类型。因此,最后与true或false运算的都将先被转换为true或false了。

如果说错,还望高手纠正,学习……
PopKaven 2006-10-25
  • 打赏
  • 举报
回复
var tt=/*这里怎么定义tt啊*/;

改成下面那样就可以了
var tt;

我测试过最后是13
javascript的类型不用指定,会自动转换为任何类型,即使是转换成一个自定义的对象也不成问题。
chen803qing 2006-10-25
  • 打赏
  • 举报
回复
顶~~~~~~~~
rob123 2006-10-25
  • 打赏
  • 举报
回复
mark!
玄之丞 2006-10-25
  • 打赏
  • 举报
回复
TT 以前DOS下的打字练习程序,可惜有千年虫。汉化版好垃圾的说。
玄之丞 2006-10-25
  • 打赏
  • 举报
回复
拷到文件里试一下就知道了。

<script>
var yn=new Boolean(false);
alert(yn)
alert(!yn)
alert("Fuck Begin");
alert( (yn||false) ) //false
alert( (yn||true) ) //false
alert( (yn&&false) ) //false
alert( (yn&&true) ) //true
alert("-------------------");
alert( (false||yn) ) //false
alert( (true||yn) ) //true
alert( (false&&yn) ) //false
alert( (true&&yn) ) //false
alert("Fuck End");
</script>

<script>
alert( "||出错时返回第一个对象"||yn );
alert( yn&&"&&出错时返回最后一个对象" );
</script>
xlyyc 2006-10-25
  • 打赏
  • 举报
回复
我以为是TAOTAO的,汗自己一下:)
stou 2006-10-24
  • 打赏
  • 举报
回复
Mark
Eilien 2006-10-24
  • 打赏
  • 举报
回复
mqrk
ok1996 2006-10-24
  • 打赏
  • 举报
回复
一帮人都是神经病????没看清楚楼主的问题吗???

TT是什么??? TT就是taotao , 即ML时用的,书本上称避孕套....
zstcs 2006-10-24
  • 打赏
  • 举报
回复
var tt
这里tt值是undefined
undefined类型转到bool都是false

undefined==false 返回的是false哟
mrshelly 2006-10-23
  • 打赏
  • 举报
回复
人BT ~~~~~~
Apq001 2006-10-23
  • 打赏
  • 举报
回复
请从这里向上搜索我的名,标准答案就在那里。

再提醒一点:||与&&这两个运算符不是对值的运算,即在运算过程中不管表达式的值,而是对表达式本身进行运算;

这两个运算符对表达式究竟如何运算?
答:只管表达式是否有意义,而不管其值几何。
对于表达式,无意义的只有6个(见我上次回复);这里要注意:所有以new方式生成的对象为动态对象,动态对象均视为有意义--这一点上次回复忘加说明(-_-!)。

再举例两个说明:
一、0||false||new Boolean(false)
运算如下:
首先:0是一个常数,刚好是无意义之一,故继续;而false也是无意义之一,故再继续;new Boolean(false)为动态对象,有意义,故上面运算结果为new Boolean(false)
二、0||new Boolean(false)||true
这会是什么结果?很多人不注意就会以为结果为true,但这是不对的。
先说答案:结果同上
首先:0是一个常数,刚好是无意义之一,故继续;new Boolean(false)为动态对象,有意义;这里已经找到有意义的表达式,故不再往下运算了。所以结果同上。
=====
对&&运算符,同理,不再多说。
okie-dokie 2006-10-23
  • 打赏
  • 举报
回复
什么意思? 没看懂
muxrwc 2006-10-15
  • 打赏
  • 举报
回复
忽忽,有意思。
温柔UP小下。。
加载更多回复(35)

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧