- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我注意到在Javascript中,我偶尔会看到
var foo = bar && bar.getSomething()
我知道这可能类似于:
var foo;
if(bar !== undefined) {
foo = bar.getSomething();
}
但这仍然让我感到困惑。因为对我来说,它与二进制运算非常相似,例如:
0100 & 0101 == 0100; //true
但是,另一方面,它又完全不同,因为例如,如果 bar 是一个对象,并且 bar.getSomething() 返回一个整数(在下面的示例中为 5),则代码最终为:
var foo = {baz : qux} && 5;
这对我来说显然毫无意义。
所以我的问题是,为什么在 Javascript 中,人们可以用这种方式编码?这是JS中二元运算的实现吗?这种编码实践的名称是什么?与传统方式相比,有什么性能优势吗?谢谢
最佳答案
我认为您对 & 运算符和 && 运算符感到困惑,& 运算符将返回按位 &,而 && 运算符在所有值均为 true 时返回最后一个操作数,或者在任何值均为 true 时返回第一个假值是假的
console.log(4 & 5);
console.log(4 && 5);
console.log(!!(4 && 5));
console.log(0 && 5);
console.log(5 && 0);
console.log(null && 5);
console.log(5 && null);
你可以使用!!运算符以确保它是 bool 值
关于javascript - var foo = bar&& bar.getSomething(); 的用法在 JavaScript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46135482/
有人能告诉我为什么这个 Grails 域类不能编译(在运行时)吗? class Person { String name String getSomething(int i) {
假设我有一个 Collection我想获得类似 Collection 的新集合与 myObjects.getIntValues() 。我可以快速而清晰地说明这一点,而不是创建新的 Collection
我喜欢类型提示或从 PHP7 开始实际显示 getter 函数的返回值。但是由于 Doctrine/Symfony 中的一对多关系,我仍然卡住了,不确定要添加到 @var 中的内容。标签。 [...]
我需要像这样设置一个枚举值: this.myEnum = ThirdPartyEnum.ABC; 但是我可用的值不是枚举形式的。 这只是一个原始字符串: "ABC" ThirdPartyEnum 没有
这个问题已经有答案了: What is "x && foo()"? (5 个回答) Javascript AND operator within assignment (7 个回答) Is && s
我试图通过我的 Fluxo 中的关系获取 CanaisCadastro 但 GetFluxo() 返回错误的行。 如果我在 findOne 中使用外键返回正确的值。 async getFluxo(wi
我是一名优秀的程序员,十分优秀!