首页 > 解决方案 > JavaScript中字符串和数字的比较

问题描述

我有一些像这样的代码:

let url = "/user_auth/devices";

const params = ["clientId = 909090", "name = peter", "active = true"];

for (let i=0; i < params.length; i++) {
        url += i > 0 ? "&" + params[i] : "?" + params[i];
    }

输出将类似于"/user_auth/devices?clientId = 909090&name = peter&active = true"

我不明白的是,在for循环内部,既然url是一个字符串,那么一个字符串加一个大于0的数字怎么办?

我已经用它测试过:

url加 0时输出为/user_auth/devices0false与 0 比较时输出为。

/user_auth/devices0加 1 时输出为/user_auth/devices01,与 0 比较时结果也为假。

有谁知道为什么一个字符串加 0 可能大于 0?

标签: javascript

解决方案


url += i > 0 ? "&" + params[i] : "?" + params[i];只是语法糖(它被称为三元运算符,相当于):

if (i > 0) {
    url += "&" + params[i];
} else {
    url += "?" + params[i];
}

i没有被添加到url,而只是i被比较0。它也可以简化为(通过因式分解params[i]):

url += (i > 0 ? "&" : "?") + params[i];

推荐阅读