JavaScript中一个字符串变量突然变成了false的问题解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。

以上是关于JavaScript中一个字符串变量突然变成了false的问题解析的主要内容,如果未能解决你的问题,请参考以下文章

我需要Unicode字符列表4e00——9fa5?

javascript 传递参数中带加号自动变成了空格

JavaScript的类型值和变量

php 把字符串变成一个变量

电脑突然间变成了蓝山office怎么办?

javascript语法规范和良好的变成习惯