为什么分配给字符串的一部分(使用数组语法)不会在javascript中抛出错误?

时间:2014-01-03 19:38:18

标签: javascript arrays string

给定一个字符串,您可以使用数组语法通过索引获取字符,如下所示:

>>> str = "hello"
"hello"
>>> str[2] // gets the third character of the string
"l"

字符串在JavaScript中是不可变的,因此不可能在适当的位置更改它们:

>>> str[2] = "j"
"j"
>>> str
"hello"

我不明白的是,为什么这不会引发异常呢?

2 个答案:

答案 0 :(得分:3)

它的工作方式与您期望的一样。在jsfiddle中查看以下内容

http://jsfiddle.net/4w7Hk/

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更倾向于没有默默地做某事而不是给出明确的错误。