搜索
javascript - "abc"[0]这种取值原理是什么?
高洛峰
高洛峰 2017-04-10 16:24:43
[JavaScript讨论组]
function xxx(){
    return "abc"[0];
}
document.write(xxx());

返回是a,当然你也可以使用console.log看下,只是想搞清楚原理。[]不是对数组取值的么,string number也可以?为什么?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(5)
怪我咯
"abc"[0]

隐式地

new String('abc')[0]

这个过程就和使用

'abc'.charAt(0)

一般。

迷茫

MDN
Dangerous Bracket Notation for Strings

从 MDN 的描述可以看出,这是个 ECMAScript5 的 feature,所以就是个语法,没有为什么
  
不过这种方法不支持 IE7,而且又不能这样子用:

var a = 'abc';
a[0] = 'z' // 没有任何反应,严格模式也如此

所以还是用 charAt 的好。

高洛峰

这里是把字符串堪称类数组对象了

大家讲道理

这个是ecma标准写的,

详情参看http://www.ecma-international.org/ecma-262/5.1/index.html#sec-15.5.5.2

具体我就不翻译了

PHP中文网

如果涉及计算机底层原理的话,其实各种编程语言实现字符串的内部原理都是类似的。拿C语言来说,一个字符占用一个字节,字符串的实现则是一个带结尾标记符的字符数组,也就是说,比如一个"abc"的字符串,编译的时候,会把这个字符串编译为一个有四个元素的数组:a[0] = 'a',a[1] = 'b',a[2] = 'c',a[3] = '\0'。其中\0表明字符串的结束,JavaScript底层原理也差不多吧~

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号