一道JS的字符串问题

var s = "laohu";
s[0] = 1;
console.log(s); //laohu
var s = "laohu";
s += 2020;
console.log(s); // laohu2020
// 上面两行为什么这么输出

js的字符串是不可变的,如果想改变,就要创建一个新的字符串来覆盖。
第一个s[0]直接赋值,是不会改变s的。
第二个s改变,是因为生成了新的字符串,让s指向了新的字符串。
至于会变成'laohu2020',是因为发生了类型转换,把2020转化成了'2020'。有用记得采纳哈~

s是字符串,laohu + 2020 = laohu2020


var s = "laohu";
s[0] = 1;
console.log(s); //laohu   --这个赋值操作,是不会改变s的值,所以还是字符串  "laohu"
var s = "laohu";
s += 2020;   //      -- 这步相当于 字符串拼接,s = ‘laohu’ + ‘2020’;   = ‘laohu2020’
console.log(s); // laohu2020  


简单的类型,可以用typeof来检验:typeof(s)

1、s是字符串,s[0] = 1;不生效;
2、还是因为s 是字符串,+=就 拼接了

字符串赋值没用所以还是那个值,
+会判断两边的类型,有字符串就是拼接符,就把两个字符串拼成一个了