![]() |
1
177
这意味着
这是书写的简写:
这种布尔表达式的速记技巧在Perl中也很常见。使用表达式:
它评估为
基本上检查
|
![]() |
2
147
双管接线员是什么(
|
![]() |
3
28
如果未设置标题,请使用“错误”作为默认值。 更通用:
读取:将foobar设置为
|
![]() |
4
13
再解释一下……
这个
注意到了吗?如果
那么这和你的例子有什么关系呢?
让我们看看这个。这个
这是因为在JavaScript中实现了逻辑表达式。它没有返回正确的布尔值(
|
![]() |
5
7
双管代表逻辑“或”。当“参数未设置”时,情况并非如此,因为如果您有这样的代码,则严格在JavaScript中:
然后调用
不是等效的。 double pipe()将第一个参数强制转换为布尔值,如果结果布尔值为true,则执行赋值,否则将分配正确的部分。 如果检查未设置的参数,这很重要。 例如,我们有一个函数setsalary,它有一个可选参数。如果用户不提供参数,则应使用默认值10。 如果您这样做:
这将在调用时产生意外结果,如
它仍将按照上述流程设置10。 |
![]() |
6
7
基本上,它检查计算之前的值是否为真,如果为真,则取该值;如果不是,则取计算之后的值。 它将取之后的值(据我所知):
|
![]() |
7
4
双管操作工 这个例子有用吗?
也可以
|
![]() |
8
4
同时 Cletus' answer 是的,我觉得应该在javascript中添加更多关于“评估为假”的细节。
不仅检查是否提供了标题/msg,还检查是否提供了 falsy . 即以下其中一种:
所以在这条线上
如果title是truthy(即,不是falsy,所以title=“titleMessage”等),那么布尔或()运算符找到一个“true”值,这意味着它的计算结果为true,因此它短路并返回真值(title)。 如果标题不正确(即上述列表中的一个),则布尔或()运算符找到了一个“false”值,现在需要计算运算符“error”的另一部分,该部分的计算结果为true,因此返回。 如果操作员的两边都评估为假,那么(经过一些快速的Firebug控制台实验之后),它会返回第二个“falsy”操作员。 即
返回Undefined,这可能允许您在尝试将标题/消息默认为“”时使用此问题中询问的行为。即跑步后
foo将设置为“”。 |
![]() |
9
4
为了给我之前所说的一切增加一些解释,我应该给你一些例子来理解逻辑概念。
它意味着,如果左侧被评估为一个真语句,它将完成,左侧将被返回并分配给变量。在其他情况下,将返回并分配右侧。 和 运算符具有如下相反的结构。
|
![]() |
10
2
引述:“构造x=x y是什么意思?” 指定默认值。 这意味着 提供Y到X的默认值 , 如果X仍在等待它的值,但还没有收到它,或者故意忽略它,以便返回到默认值。 |
![]() |
11
-5
我还得再加一件事:这一点点的速记是可憎的。它错误地使用了一个意外的解释器优化(如果第一个操作是正确的,则不必担心第二个操作)来控制一个分配。这种使用与操作员的目的无关。我认为它不应该被使用。 我更喜欢使用三元运算符进行初始化,例如,
它使用一行条件操作来实现正确的目的。它仍然用Truthinness玩难看的游戏,但是,这是你的javascript。 |
![]() |
KiraHoneybee · 具有构造函数参数的模板化类 2 年前 |
![]() |
Jiji · 将简单对象强制转换为简单的通用接口 7 年前 |
![]() |
Ashish K · 在Groovy中将字符串参数传递给对象方法参数 7 年前 |
![]() |
snuff · c语法的问题-const*const*定义 7 年前 |
![]() |
Val · 将整个结构指针数组传递给函数的语法是什么?[已关闭] 7 年前 |
![]() |
dragi · 将参数传递到void方法(整数或对象) 7 年前 |
![]() |
msinghm · 参数仅与其他参数一起工作,但我希望它们独立工作 7 年前 |
![]() |
user3251349 · SSRS:参数未过滤MySQL查询 7 年前 |