javascript中所有函数的参数都是按值传递的!
由于js中的值分为基本类型值和引用类型值,所以才会出现函数对外部值改变情况的不同。
基本类型值指简单的数据段,而引用类型值指那些可能由多个值构成的对象。
5种基本类型(Undefined Null String Number Boolean)是按值访问的,可以操作保存在变量中的实际的值;
引用类型的值是保存在内存中的对象,javascript不允许用户直接访问内存中的位置,在操作对象时,实际上是在操作对象的引用而不是实际的对象,因此,引用类型的值是按引用访问的。
在复制变量值的时候,基本类型直接将值复制一份,引用类型值也会将自己的值复制一份,只是它自己和复制的副本,都是一个指向内存中对象的指针。
因此,函数的参数都是按值传递的,只是这个值,本身就有实际值与指针之分。
现在来理解这句话:JavaScript 的字符串是不可变的!String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。
因为String在js中是基本数据类型,所以在函数调用时,传递的是复制的值,而改变的也是这个复制后的值,跟原先的值还在那里。
时间: 2024-10-15 11:59:35