function xxx(){
return "abc"[0];
}
document.write(xxx());
返回是a,当然你也可以使用console.log看下,只是想搞清楚原理。[]不是对数组取值的么,string number也可以?为什么?
function xxx(){
return "abc"[0];
}
document.write(xxx());
返回是a,当然你也可以使用console.log看下,只是想搞清楚原理。[]不是对数组取值的么,string number也可以?为什么?
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
具体我就不翻译了
如果涉及计算机底层原理的话,其实各种编程语言实现字符串的内部原理都是类似的。拿C语言来说,一个字符占用一个字节,字符串的实现则是一个带结尾标记符的字符数组,也就是说,比如一个"abc"的字符串,编译的时候,会把这个字符串编译为一个有四个元素的数组:a[0] = 'a',a[1] = 'b',a[2] = 'c',a[3] = '\0'。其中\0表明字符串的结束,JavaScript底层原理也差不多吧~
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
隐式地
这个过程就和使用
一般。