javascript的基本类型和引用类型

每种语言数据类型是最基础的东西了,今天被javascript的基本类型和引用类型搞晕,主要是在函数中的传递,所有数据都是按照“值”来传递的。

刚开始看到李松峰老师 翻译的 《JavaScript 高级程序设计 第二版》中第四章介绍,传递参数,函数传递参数)都是按照值来传递。这里并不说所有情况都是按照值来传递。对于引用类型数值还是按照引用地址来传递。

javascript的数据类型

值类型:数值、布尔值、null、undefined。

引用类型:对象、数组、函数。

这里插入一个个人对值的引用和地址引用的理解。

假如在我的书架上有很多本书,一个朋友找我来借书。

第一种方法:我告诉他的书的名字《失控》,这是一本不错的书。你自己去书架上找吧。-- -- --固定值的引用

第二种方法:我告诉他第三排第8本(这是一个地址),你去拿。-- -- --按照地址的引用

图中A:对应第一种方法,当告诉了b的书名为1这个值之后,这时候a变量可以任意去改变书架上的书。a会被赋值,但是b依然会取得1这个值。

图中B对应第二种方法,只是告诉了b的一个地址,(数组属于引用类型)赋值时只是传递了一个地址。取中间第一排的三本,但是在这之前a来了,将一本书《javascript权威指南》插入到了中间的最前面,这是b再按照这个地址取书,就会发生变化了。

===================================

此时,基本类型和引用类型的引用应该能够理解了吧。

看下面例子;

++++基本类型++++

var a = 3.14; //声明并初始化一个变量
var b = a; //把该变量复制到一个新变量
a = 4; //修改原始变量的值
alert(b); //显示3.14;副本没有改变

++++引用类型++++

var a = [1,2,3]; //初始化一个引用数组的变量
var b = a; //把该引用复制到一个新变量
a[0] = 100; //用原始引用修改数组
alert(b); //新引用显示改变后的数组[100,2,3]


++++++++++++++++++++++++++++最后一个比较难缠问题String

字符串是基本数据类型,String对象是引用类型,基本数据类型字符串在进行对象操作时会临时转化为String对象,

所以会出现令人费解的情况,而JS String对象和其他对象一样只是普通的引用

记住一点:string对象是引用类型,但是是按照值的传递方式计算。

JavaScript 的函数传递参数是值传递?还是值传递?对就是值传递……

avaScript 函数传递参数时,是值传递。虽然您可能不信,因为ECMAScript 变量可能包含两种不同数据类型的值:基本数据类型,和引用数据类型。难道引用数据类型传递的时候难道也是值传递吗?答,没错。

具体介绍参考:http://www.xiaoxiaozi.com/2010/03/05/1719/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值