function xxx(){
return "abc"[0];
}
document.write(xxx());
返回是a,当然你也可以使用console.log看下,只是想搞清楚原理。[]不是对数组取值的么,string number也可以?为什么?
回答:
"abc"[0]
隐式地
new String('abc')[0]
这个过程就和使用
'abc'.charAt(0)
一般。
回答:
从 MDN 的描述可以看出,这是个 ECMAScript5 的 feature,所以就是个语法,没有为什么
不过这种方法不支持 IE7,而且又不能这样子用:
var a = 'abc';
a[0] = 'z' // 没有任何反应,严格模式也如此
所以还是用 charAt 的好。
回答:
这里是把字符串堪称类数组对象了
回答:
这个是ecma标准写的,
具体我就不翻译了
回答:
如果涉及计算机底层原理的话,其实各种编程语言实现字符串的内部原理都是类似的。拿C语言来说,一个字符占用一个字节,字符串的实现则是一个带结尾标记符的字符数组,也就是说,比如一个”abc”的字符串,编译的时候,会把这个字符串编译为一个有四个元素的数组:a[0] = ‘a’,a[1] = ‘b’,a[2] = ‘c’,a[3] = ‘\0’。其中\0表明字符串的结束,JavaScript底层原理也差不多吧~