8赞
872
当前位置:  开发笔记 > 编程语言 > 正文

当使用es6将运算符扩展到带有表情符号的字符串时,数组中的"孔"

如何解决《当使用es6将运算符扩展到带有表情符号的字符串时,数组中的"孔"》经验,为你挑选了1个好方法。

为什么当我尝试使用spread(...)运算符使用表情符号分割字符串时,我在结果数组中得到"漏洞"?

例: [...''] // -> ["", hole]

此外,更多表情符号会创造更多"漏洞": [...''] // -> ["", "", hole, hole]

Chrome v71.0.3578.98的屏幕截图:



1> Josh Lee..:

当然这是一个错误.

作为一种解决方法,Array.from()除了没有错误之外,它的工作方式相同.

> s="\uD83C\uDF1F\u5FCD\u8005\u306E\u653B\u6483\uD83C\uDF1F"
> [...s]
(9) ["", "?", "?", "?", "?", "?", "", hole, hole]
> Array.from(s)
(7) ["", "?", "?", "?", "?", "?", ""]

看起来修复程序在Chrome 72中,但您可以在Chromium中打开一个错误并要求将其合并到71.

修复和测试用例如下:https://crrev.com/902d21dd661033427b56d5f93c12b12339bf55ab

(我相信"漏洞"是V8告诉你一些本机代码搞砸了,无法正确初始化数组,与普通的Javascript可以产生的"空"相反.)

是的,V8肯定让自己感到困惑:

> a=[...'\u{1f4a9}']
(2) ["", hole]
> hole=a[1]
undefined
> hole
VM384:1 Uncaught ReferenceError: hole is not defined

推荐阅读
devbox
火鸟大叔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4