JavaScript:charCodeAt()和codePointAt()的区别

JavaScript中的charCodeAt()返回Unicode编码,对于4字节字符处理不正确,而codePointAt()能正确处理,尤其在处理Unicode码点大于0xFFFF的字符时。codePointAt()返回码点的十进制值,使用for...of循环或扩展运算符可正确处理多字节字符。
摘要由CSDN通过智能技术生成
  • charCodeAt()

    str.charCodeAt(index)
    

    返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
    如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN。

    var str = "javascript";
    str.charCodeAt(2); // 118
    str.charCodeAt(12); // NaN
    str.charCodeAt(-2); // NaN
    
  • codePointAt()

    str.codePointAt(index)
    

    返回指定位置的字符的 Unicode 编码。
    如果 index 是负数,或大于等于字符串的长度,则 codePointAt() 返回 undefined。

    var str = "javascript";
    str.codePointAt(2); // 118
    str.charCodeAt(12); // undefined
    str.charCodeAt(-2); // undefined
    
  • 区别
    JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode 码点大于0xFFFF的字符),JavaScript 会认为它们是两个字符。

    var s = "𠮷";
    
    s.length // 2
    s.charAt(0) // ''
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值