请解释为什么"改变数字的价值甚至没有意义"

Alo*_*dal 4 javascript computer-science

我刚刚阅读JavaScript: David Flanagan 的权威指南.我真的很享受,我很高兴我的第一本Javascript书就是这本书.:)

但是,我对这一段(3.7不可变原始值和可变对象引用)没有多大意义:

JavaScript在原始值(undefined, null布尔值,数字和字符串)和对象(包括数组和函数)之间存在根本区别.基元是不可变的:没有办法改变(或"改变")原始值.对于数字和布尔值来说,这是显而易见的 - 改变数字的值甚至没有意义.然而,字符串并不那么明显.由于字符串就像字符数组,您可能希望能够在任何指定的索引处更改字符.

可能由于缺乏CS背景(自学成才和所有......),我只是错过了一些东西,但有人能帮我解释一下吗?

特别是我所提出的部分强调:为什么改变数字的价值是没有意义的?


我的想法到目前为止:

  • 也许他严格区分(可以称之为其他语言)"变量"和"价值"的概念.那么好吧,将值3更改为值4(这样3 == 4)确实没有意义,但是这样的解释在下一句中失败了:这样的操作对字符串没有任何意义而不是数字......?

nbr*_*oks 6

你是对的,改变一个字符串文字的是没有意义的- 这实际上是他所说的; 他只是说,它可能不会像明显3 == 4情况下,因为你可以在一个字符串引用单个字符(然后可能会认为你可以通过改变特定字符更改字符串).

考虑这个例子:

var s = 'hello world';
s[0] = 'H';
Run Code Online (Sandbox Code Playgroud)

直观地说,这看起来好像会把这个词大写,但字符串是不可变的,所以不会起作用.

检查输出s我们仍然看到:s > 'hello world'