javascript - 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/devices0
,false
与 0 比较时输出为。
当/user_auth/devices0
加 1 时输出为/user_auth/devices01
,与 0 比较时结果也为假。
有谁知道为什么一个字符串加 0 可能大于 0?
解决方案
这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];
推荐阅读
- vue.js - 使用单选按钮通过 Vue.js 设置项目的状态
- mysql - AWS Cloudwatch DatabaseConnections 指标不同于 mysql Threads_connected
- php - Laravel:@can 在查询生成器上抛出错误?
- java - 根据环境改变方法
- wpf - 在 MVVM 中取消 LostFocus
- javascript - 在包含数组元素的对象上使用 .reduce 将其转换为数组
- php - 消息:在 Web 服务器上执行 python selenium 时,“chromedriver”可执行文件需要在 PATH 中
- azure-sql-database - 恢复旧数据库,现在 Umbraco 连接字符串不起作用
- javascript - 单击链接时如何在Materialize CSS中隐藏sidenav?
- font-awesome - Font Awesome css 表包含内容旁边的所有方块: