扫码关注官方订阅号
function xxx(){ return "abc"[0]; } document.write(xxx());
返回是a,当然你也可以使用console.log看下,只是想搞清楚原理。[]不是对数组取值的么,string number也可以?为什么?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
"abc"[0]
隐式地
new String('abc')[0]
这个过程就和使用
'abc'.charAt(0)
一般。
MDNDangerous Bracket Notation for Strings
从 MDN 的描述可以看出,这是个 ECMAScript5 的 feature,所以就是个语法,没有为什么 不过这种方法不支持 IE7,而且又不能这样子用:
var a = 'abc'; a[0] = 'z' // 没有任何反应,严格模式也如此
所以还是用 charAt 的好。
charAt
这里是把字符串堪称类数组对象了
这个是ecma标准写的,
详情参看http://www.ecma-international.org/ecma-262/5.1/index.html#sec-15.5.5.2
具体我就不翻译了
如果涉及计算机底层原理的话,其实各种编程语言实现字符串的内部原理都是类似的。拿C语言来说,一个字符占用一个字节,字符串的实现则是一个带结尾标记符的字符数组,也就是说,比如一个"abc"的字符串,编译的时候,会把这个字符串编译为一个有四个元素的数组:a[0] = 'a',a[1] = 'b',a[2] = 'c',a[3] = '\0'。其中\0表明字符串的结束,JavaScript底层原理也差不多吧~
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
隐式地
这个过程就和使用
一般。
MDN
Dangerous Bracket Notation for Strings
从 MDN 的描述可以看出,这是个 ECMAScript5 的 feature,所以就是个语法,没有为什么
不过这种方法不支持 IE7,而且又不能这样子用:
所以还是用
charAt
的好。这里是把字符串堪称类数组对象了
这个是ecma标准写的,
详情参看http://www.ecma-international.org/ecma-262/5.1/index.html#sec-15.5.5.2
具体我就不翻译了
如果涉及计算机底层原理的话,其实各种编程语言实现字符串的内部原理都是类似的。拿C语言来说,一个字符占用一个字节,字符串的实现则是一个带结尾标记符的字符数组,也就是说,比如一个"abc"的字符串,编译的时候,会把这个字符串编译为一个有四个元素的数组:a[0] = 'a',a[1] = 'b',a[2] = 'c',a[3] = '\0'。其中\0表明字符串的结束,JavaScript底层原理也差不多吧~