zoukankan      html  css  js  c++  java
  • JavaScript中一个字符串变量突然变成了false的问题解析

         为了方便调试,写了一个页面未登录时,调试模式下自动登录的功能,发现有一个变量我初始化给它赋值了一个字符串,但是在用的时候发现它变成了false,好神奇。后来仔细检查引用,发现是一个判断条件中少写了一个等号引起的。js代码如下:
              var sSessionKey = "test_key";
              if (sSessionKey = undefined || sSessionKey == null) {
                   console.error("the sSessionKey is null.");
                   return;
              }     
              console.info(sSessionKey);// 1
         最后发现1处的打印会是false,仔细检查发现判断sSessionKey时少写了一个等号,导致变成了赋值符号。那为什么会变为false呢?推测是跟JavaScript中的符号运算优先级有关系,赋值运算符的优先级低于求或运算符,所以上述判断条件等价于下列表达式:
              if (sSessionKey = (undefined || sSessionKey == null)) {
              }
         "sSessionKey == null"是false,undefined判断时也是false,所以最后赋给sSessionKey的就是一个false。最后的打印也是false。
    每多学一点知识,就少写一行代码。
  • 相关阅读:
    js去前后空格
    IE7以上支持Fiddler 监听本地
    IE8 scriptX print 无法使用的bug
    那些相见恨晚的 JavaScript 技巧
    oracle sql
    JS人民币金额转大写程序
    div自适应高度
    .NET Remoting 使用最佳实践,(部分翻译)
    对DataTable 进行Distinct操作
    用财富的眼光看知识管理
  • 原文地址:https://www.cnblogs.com/guanmu/p/5174690.html
Copyright © 2011-2022 走看看