java里false和true语句_布尔值设置为false;如果语句没有==,则返回true

我有一个角度组件,有一个copmonent级布尔变量和一个onClick事件 . html文件如下所示:

ts文件的相关代码如下:

export class myComponent implements OnInit {

guardFirst : boolean;

guardSecond : Boolean;

constructor(...) {

this.guardFirst = false;

this.guardSecond = false;

}

onClick( ev : MouseEvent ) {

if (this.guardFirst) {

if (this.guardSecond) {

console.log("first guard: " + this.guardFirst + "; second guard: " + this.guardSecond);

// the logic takes place here

}

this.guardSecond = true;

}

this.guardFirst = true;

}

}

我明显改变了实际的代码,因为它是专有的,但结构是一样的 . 您希望逻辑和控制台日志记录不会发生,直到div中的第三次单击,但它发生在第一次 . 控制台为两个变量都记录了false,但是以某种方式传递了两个if语句,根据其他语言的工作方式,人们希望返回false . 经过大量的调试和控制台日志记录来检查值和流量后,我最终想到改变代码如下:

onClick( ev : MouseEvent ) {

if (this.guardFirst == true) {

if (this.guardSecond == true) {

console.log("first guard: " + this.guardFirst + "; second guard: " + this.guardSecond);

// the logic takes place here

}

this.guardSecond = true;

}

this.guardFirst = true;

}

这告诉我没有值等价语句的布尔值在它们不为null或未定义时返回true; false或true,只要指定了值,就返回true . 由于我的代码将布尔值作为原始对象和对象,因此这不是这种行为的原因 . 我尝试在没有Angular的Typescript中对jsfiddle进行类似测试,并且它按照我期望的方式工作(如果值为false,则返回false,不管缺少==) .

谁能向我解释这个现象?它从何而来?似乎它必须是一个Angular的东西 - 这是真的吗?这在Angular中是否总是这样,或者与我的项目有关?这是预期的行为吗?如果是这样,为什么开发人员做出这个决定?如果没有,为什么会发生?

提前致谢 .

EDIT: 修正了自我/这个错字 . 对于投票结束问题的人,请尝试发表评论,解释为什么您认为该问题应该被关闭,以及如何更改它以符合您对SO指南的理解 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值