Chinaunix首页 | 论坛 | 博客
  • 博客访问: 88004
  • 博文数量: 70
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 417
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-11 10:48
文章分类

全部博文(70)

分类: IT职场

2014-05-22 16:57:31

起源,Franky 大神研读 ECMAScript,说是标识符可以是修饰符字符(Modifier letter)啥的,他就查啊查啊的这个修饰符字符是啥。
最后整出个 a? 字符,是修饰符字符,然后测试:
a? = 1;
console.log(a?); ---> 1
恩,证实了 EMCAScript 所说。

然后吧……
console.log('a? '.length) --> 2
*&……%¥#¥……这是毛?!!!
继续拆
'a?'.charAt(0) == "a" ---> tr
'a?'.charCodeAt(1).toString(16) ---> 300
呃,Unicode 的 \?,难道是个  ` (上点) 字符?这玩意是组合的?!

(此PDF中为其中一部分 Combining Diacritical Marks —— 组合变音标记)

原来修饰符字符就是指的 Unicode 中需要依赖其他字符产生新字符的一组特定编码……
ECMAScript 内说其使用的是 Unicode 编码规范,Unicode转义也可以出现在标识符中,转义仅提供单个字符给标识符,js引擎处理的是规范后的标识符文本,虽然也是Unicode的,但不一定是原始那个Unicode串了。
所以,修饰符字符(Modifier letter)这玩意同是 Unicode,照样能用,不过里面没有转义字符,对 JS 来说,它就是俩字符,与普通的俩字符的字符串没毛区别。

突然想到按ASCII标准算字符长度的并截断的代码遇到修饰符有可能要杯具啦,哇哈哈哈哈。
呃,偶的代码果了个然的,杯具。

哦~~~发布blog后,发现163也杯具了,哇哈哈哈哈~~心理平衡鸟~~~
阅读(234) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~