javascript - 使用这些不同的方式比较两个字符有什么区别?
问题描述
在这里的源代码中:https ://github.com/pillarjs/parseurl/blob/master/index.js#L96
if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) {
// ...
}
作者str.charCodeAt( 0 ) !== 0x2f
用来检查字符串是否以斜杠(/)开头,我想知道以下不同方式之间的区别:
str.charCodeAt( 0 ) === 0x2f;
str.charCodeAt( 0 ) === 47;
str.startsWith( '/' );
谢谢你。
解决方案
在现代环境中,它们都是一样的。
我想如果有人0x2f
非常熟悉 ASCII 的十六进制字符代码(比十进制索引更熟悉),他们可能会使用该版本。
该版本的一个潜在问题startsWith
是它需要String.prototype.startsWith
,这在 Internet Explorer 等古老的环境中并不存在。使用charCodeAt
会稍微兼容随机用户。
IMO,在保持向后兼容性的同时看起来更清晰的替代方案是:
str.charAt(0) === '/'
或者
str[0] === '/'
推荐阅读
- python - 将值附加到空数据框中的问题
- r - 如何将R中的多行与数据集中的多列合并
- r - 如何根据另一个向量的值创建具有增量值的向量?
- sql - 我有两个内连接表
- python - 如何通过每次按向上箭头在 PyCharm 中运行“manage.py runserver”命令?
- reactjs - 在 Material UI 多选中添加全选并在选择选项中显示值
- r - 如何使用 R Shiny 中的绘图代理将文本注释添加到绘图图中
- scala - How to obtain all possible members of a coproduct
- typescript - 在 TypeScript 上投射地图值
- sql - SQL 返回最后日期