我了解doublenot运算符在JavaScript中的作用。我很好奇它的用法,以及我最近的断言是否正确,我对此很好奇。
我说这if (!!someVar)
既没有意义,也不是(!!someVar && ...
因为if
和&&
都将someVar评估为布尔值,所以!!
是多余的。
实际上,我唯一想到使用double not运算符是合法的,是如果您想与另一个布尔值进行严格比较(因此可能返回的值显式地期望为true或false)。
它是否正确?当我注意到jQuery 1.3.2同时使用if (!!someVar)
和时,我开始怀疑自己。return !!someVar && ...
在这种情况下,double是否没有任何实际作用?
我个人认为这只会导致混乱。如果看到if语句,则知道它正在将其评估为布尔值。
在我与您在一起的if
陈述的上下文中,这是完全安全的,因为在内部,该ToBoolean
操作将在条件表达式上执行(
请参阅规范的第3步 )。
但是,如果要从函数返回布尔值,则应确保结果实际上是布尔值,例如:
function isFoo () {
return 0 && true;
}
console.log(isFoo()); // will show zero
typeof isFoo() == "number";
总之,布尔逻辑运算符可以返回操作数 ,而不一定返回Boolean
结果:
如果第一个 操作数 是 真实的&&
,则逻辑AND运算符()将返回 第二个操作数 的值: __
true && "foo"; // "foo"
如果它本身是 falsy ,它将返回 第一个操作数 的值: __
NaN && "anything"; // NaN
0 && "anything"; // 0
另一方面,如果第一个 操作数 为 falsy ,则逻辑OR运算符(||
)将返回 第二个操作数 的值: __
false || "bar"; // "bar"
如果它本身不是伪造的,它将返回 第一个操作数 的值:
"foo" || "anything"; // "foo"
也许这是值得一提的是, falsy 值是:null
,undefined
,NaN
,0
,零长度字符串,当然false
。
在 布尔上下文中 评估的任何其他内容(不是 虚假的,Boolean
对象或Boolean
值)都将返回。 __true
问题内容: 有人可以简单地向我解释什么是(有条件的“三元”)运算符,以及如何使用它? 问题答案: 这是if-else语句的单行缩写。它称为条件运算符。1个 这是可以通过条件运算符缩短的代码示例: 可以这样缩短: 与所有表达式一样,条件运算符也可以用作具有副作用的独立语句,尽管在缩小之外这是不常见的: 它们甚至可以链接: 但是要小心,否则最终将得到如下复杂的代码: 1 通常称为“三元运算符”,但实际
问题内容: 我试图了解表运算符。 这是示例: 我的主要障碍是了解 何时 使用。 所以我想知道使用in实现的结果与上述相同将有多困难? 是否会使查询更短或更易读? 如果该示例没有显示使用的巨大优势,那么什么是使用显着的优势呢? 问题答案: 首先-可以调用 表值函数 ,其中参数值是从查询的表中获取的,如下所示: 或 切碎xml列 根据我的经验,当您需要进行一些 预先计算 时,它非常有用: 使用的另一个
问题内容: 我正在尝试在Dropwizard上使用MYSQL JDBI进行IN查询(我认为不相关)。 如这里的建议,我还用 但是,当我启动应用程序时,出现以下错误: 有谁对解决这个问题有个好主意? 问题答案: 有两种方法可以实现它。 1 。使用 该注释期望StringTemplate中具有SQL语句的组文件 说我有这个文件PersonExternalizedSqlDAO 由于我们正在使用,因此必须
问题内容: 我似乎找不到在JavaScript中重载[]运算符的方法。外面有人知道吗? 我在想… 还是我没有看正确的东西。 问题答案: 您可以使用ES6代理(在所有现代浏览器中都可用)进行此操作
问题内容: 为什么当我在做时它起作用,但是当我在做时: 它不起作用? 为什么,以及如何解决? 完整代码: 但是这段代码可以正常工作: JSFiddle:https ://jsfiddle.net/69z2wepo/55100/ 问题答案: 这样一来,您就可以改变状态,因为它和做是同一件事。您永远不要改变状态(请参阅https://facebook.github.io/react/docs/comp
嗨, 我还尝试使用com.querydsl.core.types.dsl.expressions和com.querydsl.core.types.predicate,如下所示: 但我得到了一个无效的运算符和错误。 怎么会这样呢?