我试图了解一个关于JSON字符串的简单基本概念。我正在运行一个看起来像这样的简单测试:
$(document).ready(function() {
var last = 9;
var json1 = $.parseJSON('{"id":"10"}');
var json2 = $.parseJSON('{"id":10}');
if(json1.id > last)
alert("json1.id is greater than last");
if(json2.id > last)
alert("json2.id is greater than last");
});
因为变量" last"是类型int我尝试在它和" id"之间进行比较。来自两个不同的JSON字符串。 json1将十个值表示为字符串,而json2将其表示为整数值。运行此命令时,将执行两个警报。我没想到的是。我预计第二个警报会执行,但不是第一个警报,因为十个警报会以字符串形式显示。
我认为在JSON中格式化整数值的正确方法是在json2中,对吗?
为什么第一个测试正在执行警报?
我正在尝试对更大的项目进行问题排查,并认为问题可能与JSON字符串格式化有关。
答案 0 :(得分:1)
Javascript操作员的文档包含所有答案:
使用标准词典排序比较字符串 Unicode值。在大多数情况下,如果两个操作数不相同 类型,JavaScript尝试将它们转换为适当的类型 比较。这种行为通常会导致比较 操作数字。内部类型转换的唯一例外 比较涉及===和!==运算符,它们执行严格 平等和不平等的比较。这些运营商不会尝试 在检查相等性之前将操作数转换为兼容类型。