0

我正在尝试使用 JS Cookie 插件来读取 cookie 的值,如果值不是 1,则包含通知栏(Hello Bar)。

这是我的代码:

<!-- HelloBar code start -->
<script type="text/javascript" src="//www.hellobar.com/hellobar.js"></script>
<script type="text/javascript">
if($.cookie('returning_user') !== '1') {
    new HelloBar(12345,12345);
}
</script>
<!-- HelloBar code end -->
  1. !== 是在这里测试不等式的正确运算符吗?
  2. 通过将 1 放在引号中,当我真的想要一个整数时,我是否正在测试一个字符串?

现在,代码的内部部分(新的 HelloBar ...)永远不会执行。

4

1 回答 1

1

!==将检查类型和值两者

所以如果你想匹配 Integer

比使用

if($.cookie('returning_user') !== 1) {

===并且!==是严格的比较运算符:

JavaScript 具有严格的和类型转换的相等比较。为了严格相等,被比较的对象必须具有相同的类型并且:

  • 当两个字符串具有相同的字符序列、相同的长度和对应位置的相同字符时,它们是严格相等的。
  • 当两个数字在数值上相等(具有相同的数值)时,它们是严格相等的。NaN 不等于任何东西,包括 NaN。正零和负零彼此相等。
  • 如果两个布尔操作数都为真或都为假,则两个布尔操作数严格相等。
  • 如果两个对象引用同一个对象,则它们是严格相等的。
  • Null 和 Undefined 类型是 ==(但不是 ===)。[即空==未定义(但不是空===未定义)]

比较运算符 - MDC

0==false   // true
0===false  // false, because they are of a different type
1=="1"     // true, auto type coercion
1==="1"    // false, because they are of a different type
于 2013-08-27T01:28:56.173 回答