javascript - Javascript 中字符串逻辑运算符的用途

标签 javascript string jqgrid operators

我偶然发现了一些代码,我希望有人可以向我解释。

这在 jqGrid 上下文中使用。

onSelectRow: function(id){ 
     if(id && id!==lastsel){ 
          jQuery('#rowed3').jqGrid('restoreRow',lastsel);
          jQuery('#rowed3').jqGrid('editRow',id,true); 
          lastsel=id; 
     } 
}, 

为什么在 JavaScript 中对字符串使用逻辑运算符,如上所示?这只是一个错误还是这里有一些我不理解的功能?

代码取自http://trirand.com/blog/jqgrid/rowedex3.html

完整示例 http://trirand.com/blog/jqgrid/jqgrid.html > 行编辑 > 使用事件

最佳答案

变量应该是数字,但是条件条件可以以任何方式工作。


if(id && id !== Lastsel)

<小时/>
  1. 第一个id表示它必须有一个值。该值也必须是真实的。如果值不是 falsy,则为 truthy,这意味着它不能是以下之一(借自11heavens.com):

    • 未定义
    • 空字符串''
    • 数字0
    • 数字 NaN(NaN 属于数字类型)


    注意:您将在 JavaScript 中的其他地方看到与 true 相同类型的比较,特别是 for/while 循环:

    /*1*/ while(id){...} // while id is true, do something
    /*2*/ for(;id;){...} // same thing, without the incrementation or variable definition
    



  2. 第二部分是说 id 不能等于lastsel,这是最后使用的 id。 !== 在 JavaScript 中很特殊,这意味着它必须比较值和类型,而 != 只是比较值:

    • a == b :a 的值等于 b 的值
    • a != b :a 的值不等于 b 的值
    • a === b :a 的值等于 b 的值,且 a 的类型等于 type b
    • a !== b :a 的值不等于 b 的值和 a 的类型不等于 b
    • 的类型


编辑

<小时/>

此外,如果您看到括号中的表达式,可能会有助于思考该表达式:
if( (id) && (id !== Lastsel) )

关于javascript - Javascript 中字符串逻辑运算符的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4103917/

相关文章:

javascript - Node 模块@kenjiuno/msgreader错误: MsgReader is not a constructor的原因

javascript - 使用 VSCode 将常量重构为惰性常量

javascript - Vue - 在渲染之前修改插槽的正确方法 - 目标 : add transition group key programatically

c - 我在哪里可以找到 string.c 文件本身(阅读它)?

jquery - jqGrid 工具栏按列搜索运算符

jquery - jqgrid : how to change the class of one cell (when mouse is over on)?

javascript - 无法使用 CasperJS 在没有表单的情况下填充输入元素

java - Java 中是否可以将数字数据类型转换为字符串输出?

java - 与套接字输入流比较时的字符串相等问题

jquery - 将 jqGrid 行高设置为低于 23px