我正在学习javascript字符串方法here。
在提取字符串字符部分下,它说:
有2种安全方法用于提取字符串字符:
charAt(position)
charCodeAt(position)
这里的问题是:
答案 0 :(得分:2)
有两种方法可以从字符串中访问字符。
// Bracket Notation
"Test String1"[6]
// Real Implementation
"Test String1".charAt(6)
出于这些原因(Source)使用括号是个坏主意:
此符号在IE7中不起作用。 第一个代码段将返回 在IE7中未定义。如果你碰巧使用 所有字符串的括号表示法 你的代码,你想迁移 到
.charAt(pos)
,这是一个真正的痛苦: 在您的代码中使用括号 并且没有简单的方法来检测是否 这是一个字符串或一个 阵列/对象。您无法使用此表示法设置角色。由于没有警告 任何一种,这真的令人困惑 令人沮丧的。如果你正在使用
.charAt(pos)
功能,你不会 我很想做到这一点。
此外,它可能会在edge cases
中产生意外结果
console.log('hello' [NaN]) // undefined
console.log('hello'.charAt(NaN)) // 'h'
console.log('hello' [true]) //undefined
console.log('hello'.charAt(true)) // 'e'

基本上,它是一种在所有浏览器中未完全实现的快捷符号。
注意,您无法使用任何一种方法编写字符。但是,使用.charAt()
函数可以更容易理解该功能,在大多数语言中,这是一个只读函数。
因此,为了兼容性目的,.charAt
被认为是安全的。
速度测试:http://jsperf.com/string-charat-vs-bracket-notation
Testing in Chrome 47.0.2526.80 on Mac OS X 10.10.4
Test Ops/sec
String charAt
testCharAt("cat", 1);
117,553,733
±1.25%
fastest
String bracket notation
testBracketNotation("cat", 1);
118,251,955
±1.56%
fastest