js中的值类型和引用类型小结 文字说明与实例


Posted in Javascript onDecember 12, 2010

一、拥抱JavaScript

曾经名不经传的JavaScript随着AJAX的流行而身价倍增,现在JavaScript不再仅仅是WEB开发中一个可有可无的辅助工具,甚至有了专门属于它的职位“JavaScript工程师”,那怕你仅仅是一名WEB后台开发程序员,你都必须了解JavaScript,至少在一些相关招聘职位要求上你可以看到“熟悉JavaScript优先”的字眼。甚至我还要告诉你,你将可以用JavaScript开发桌面软件,这得益于Adobe AIR的另外一种开发模式,即用HTML+CSS+JavaScript开发AIR。

二、值类型和引用类型话题
随着部分有大型面向对象语言基础朋友的介入,他们试着用JavaScript去模拟面像对象的各种特征,尽管有些模拟显得较为牵强,但也让我们见识到了JavaScript的强大与灵活性。本文暂不探讨JavaScript面向对象编程技术。就讲讲JavaScript中的两种变量类型:即值类型和引用类型,这通常又会让你联想到“堆栈”,另外还有“引用地址”或“指针”相关概念,有过Java或C#编程经验的人相信对这两种类型不陌生。下面就举例讲一下这两种类型在JavaScript中的体现、用法及注意事项。

三、JavaScript值类型和引用类型有哪些

(1)值类型:数值、布尔值、null、undefined。

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

四、如何理解值类型和引用类型及举例

我们可以用“连锁店”和“连锁店钥匙”来理解,不知道以下比喻合不合适,^-^。

(1)值类型理解:变量的交换等于在一个新的地方按照连锁店的规范标准(统一店面理解为相同的变量内容)新开一个分店,这样新开的店与其它旧店互不相关、各自运营。

【值类型例子】

function chainStore() 
{ 
var store1='Nike China'; 
var store2=store1; 
store1='Nike U.S.A.'; 
alert(store2); //Nike China 
} 
chainStore(); 
//把一个值类型(也可以叫基本类型)store2传递给另一个变量(赋值)时,其实是分配了一块新的内存空间,因此改变store1的值对store2没有任何影响,因为它不像引用类型,变量的交换其实是交换了指像同一个内容的地址。

(2)引用类型理解:变量的交换等于把现有一间店的钥匙(变量引用地址)复制一把给了另外一个老板,此时两个老板同时管理一间店,两个老板的行为都有可能对一间店的运营造成影响。

【引用类型例子】

function chainStore() 
{ 
var store1=['Nike China']; 
var store2=store1; 
alert(store2[0]); //Nike China 
store1[0]='Nike U.S.A.'; 
alert(store2[0]); //Nike U.S.A. 
} 
chainStore(); 
//在上面的代码中,store2只进行了一次赋值,理论上它的值已定,但后面通过改写store1的值,发现store2的值也发生了改变,这正是引用类型的特征,也是我们要注意的地方。
Javascript 相关文章推荐
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
Mar 23 Javascript
IE6弹出“已终止操作”的解决办法
Nov 27 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
Sep 28 Javascript
Ajax中解析Json的两种方法对比分析
Jun 25 Javascript
JavaScript 七大技巧(二)
Dec 13 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
Feb 16 Javascript
微信小程序 实战程序简易新闻的制作
Jan 09 Javascript
js实现返回顶部效果
Mar 10 Javascript
微信小程序网络请求wx.request详解及实例
May 18 Javascript
LayerClose弹窗关闭刷新方法
Aug 17 Javascript
vue实现一个炫酷的日历组件
Oct 08 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
JS俄罗斯方块,包含完整的设计理念
Dec 11 #Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
Dec 11 #Javascript
JavaScript下利用fso判断文件是否存在的代码
Dec 11 #Javascript
jQuery ul标签下拉菜单演示代码
Dec 11 #Javascript
基于jquery的修改当前TAB显示标题的代码
Dec 11 #Javascript
Wordpress ThickBox 添加“查看原图”效果代码
Dec 11 #Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
Dec 11 #Javascript
You might like
php与java通过socket通信的实现代码
2013/10/21 PHP
PHP里的单例类写法实例
2015/06/25 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
vue v-model的用法解析
2020/10/19 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
python操作xml文件示例
2014/04/07 Python
Python with的用法
2014/08/22 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
Python虚拟环境项目实例
2017/11/20 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
中文专业求职信
2014/06/20 职场文书
超级礼物观后感
2015/06/15 职场文书
党员干部学习心得体会
2016/01/23 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
详解php中流行的rpc框架
2021/05/29 PHP
springboot中的pom文件 project报错问题
2022/01/18 Java/Android