js值的类型和函数传参
2015-06-24 12:16
435 查看
javascript中所有函数的参数都是按值传递的!
由于js中的值分为基本类型值和引用类型值,所以才会出现函数对外部值改变情况的不同。
基本类型值指简单的数据段,而引用类型值指那些可能由多个值构成的对象。
5种基本类型(Undefined Null String Number Boolean)是按值访问的,可以操作保存在变量中的实际的值;
引用类型的值是保存在内存中的对象,javascript不允许用户直接访问内存中的位置,在操作对象时,实际上是在操作对象的引用而不是实际的对象,因此,引用类型的值是按引用访问的。
在复制变量值的时候,基本类型直接将值复制一份,引用类型值也会将自己的值复制一份,只是它自己和复制的副本,都是一个指向内存中对象的指针。
因此,函数的参数都是按值传递的,只是这个值,本身就有实际值与指针之分。
现在来理解这句话:JavaScript 的字符串是不可变的!String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。
因为String在js中是基本数据类型,所以在函数调用时,传递的是复制的值,而改变的也是这个复制后的值,跟原先的值还在那里。
由于js中的值分为基本类型值和引用类型值,所以才会出现函数对外部值改变情况的不同。
基本类型值指简单的数据段,而引用类型值指那些可能由多个值构成的对象。
5种基本类型(Undefined Null String Number Boolean)是按值访问的,可以操作保存在变量中的实际的值;
引用类型的值是保存在内存中的对象,javascript不允许用户直接访问内存中的位置,在操作对象时,实际上是在操作对象的引用而不是实际的对象,因此,引用类型的值是按引用访问的。
在复制变量值的时候,基本类型直接将值复制一份,引用类型值也会将自己的值复制一份,只是它自己和复制的副本,都是一个指向内存中对象的指针。
因此,函数的参数都是按值传递的,只是这个值,本身就有实际值与指针之分。
现在来理解这句话:JavaScript 的字符串是不可变的!String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。
因为String在js中是基本数据类型,所以在函数调用时,传递的是复制的值,而改变的也是这个复制后的值,跟原先的值还在那里。
相关文章推荐
- 【技术分享】很详细的JS底层分析
- 介绍JavaScript的一个微型模版
- js实现a标签超链接提交form表单的方法
- 现在公司里面基本上封装数据用的都是JSON,让我们来学习学习JSON提高自己的录取概率
- 对JavaScript客户端应用编程的一些建议
- javascript删除数组重复元素的方法汇总
- Extjs组件render说明
- 按钮的 属性href导致跳转失效
- js实现跨域的方法实例详解
- JavaScript中的Promise使用详解
- 200多个js技巧代码
- 详解JavaScript下的事件委托和this
- 关于JS-闭包概念的好文章
- js查找两个数组中相同的项 filter
- UnderscoreJS
- 怎样调试移动应用中的JavaScript代码
- javascript中的ajax对象(一)
- javascript中对条件判断语句的优化
- JSP页面EL表达式无效的问题
- javascript新手入门必读书籍推荐