给定一个字符串,您可以使用数组语法通过索引获取字符,如下所示:
>>> str = "hello"
"hello"
>>> str[2] // gets the third character of the string
"l"
字符串在JavaScript中是不可变的,因此不可能在适当的位置更改它们:
>>> str[2] = "j"
"j"
>>> str
"hello"
我不明白的是,为什么这不会引发异常呢?
答案 0 :(得分:3)
它的工作方式与您期望的一样。在jsfiddle中查看以下内容
str = "hello";
alert(str[2]);
// "l"
str[2] = "j";
alert(str[2]);
// still "l", not "j"
请注意,这不会引发任何警告或错误。但是你可以通过使用严格模式来抛出它。
在
上使用严格模式查看以下内容"use strict";
var str = "hello";
alert(str[2]);
// "l"
try{
str[2] = "j";
// we never get here
alert(str[2]);
}
catch(e){
alert(e.message);
// 2 is read-only
}
答案 1 :(得分:1)
str [2]的赋值失败,但它仍然返回值,该值被赋值为'a'。
这看起来很明显。
[edit]至于为什么它不会返回错误,这可能是依赖于实现的。我注意到Javascript更倾向于没有默默地做某事而不是给出明确的错误。