这是一系列关于JavaScript中语法的问题.这也是社区Wiki,因此邀请每个人参与维护此列表.
Stack Overflow不允许搜索特定字符.因此,在搜索运算符和其他语法标记时,很难找到许多关于运算符和其他语法标记的问题.这也使得关闭重复更加困难.以下列表是为了解决此问题.
主要思想是在Stack Overflow上链接现有问题,因此我们更容易引用它们,而不是复制ECMAScript规范中的内容.
此外,这是PHP符号引用的公然副本.我们需要一个JS.
请帮忙.编辑并添加指向其他运算符/语法参考的链接,或者如果您无法在特定语法上找到好的问题/答案,请添加此问题的答案并将其链接
我知道在JavaScript中你可以这样做:
var oneOrTheOther = someOtherVar || "these are not the droids you are looking for...";
Run Code Online (Sandbox Code Playgroud)
其中变量oneOrTheOther将在第一表达式的值,如果它不是null,undefined或false.在这种情况下,它被分配给第二个语句的值.
但是,oneOrTheOther当我们使用逻辑AND运算符时,变量会分配给什么?
var oneOrTheOther = someOtherVar && "some string";
Run Code Online (Sandbox Code Playgroud)
什么时候会发生someOtherVar非假的?假的
时候会发生什么someOtherVar?
只是学习JavaScript,我很好奇与AND运算符一起分配会发生什么.
javascript variable-assignment logical-operators and-operator
为什么这些逻辑运算符返回一个对象而不是布尔值?
var _ = (obj.fn && obj.fn() ) || obj._ || ( obj._ = {} );
var _ = obj && obj._;
Run Code Online (Sandbox Code Playgroud)
我想理解为什么它返回obj.fn()(如果已定义)OR的obj._结果,但不返回布尔结果.
根据https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Logical_Operators
expr1 || expr2对我来说很有意义。它使表达式短路并返回第一个表达式,这很有意义。我经常使用它来选择传递的变量与默认变量。对于前。
var default_connection = 'localhost:27017/task_master';
function setdb(connection){
var conn_str = connection || default_connection;
//Do something here
}
Run Code Online (Sandbox Code Playgroud)
这种&&行为打败了我,对我来说似乎很难理解。
expr1 && expr2-返回expr1是否可以将其转换为false;否则,返回expr2。
有人可以帮助我理解这一点,并提出一些&&有用的用例。
编辑:从建议的原始问题中找到它。这给了我足够的理由使用它。
&&有时称为警卫队。
变量=指标&&值
仅当指标为真时,才可以使用它来设置值。
我的问题是,“有人可以帮助我理解这一点,并提出一些&&有用的用例。” 我不知道这个问题的哪一部分很难理解。我举了一个例子,我发现||。有用,上面的原因也充分说明了&&也可以有用的原因。是的,我不熟悉JavaScript,是的,我不像你们所有人那么聪明。但是有点友善会帮助我到达那里。和平!