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 相关文章推荐
用Javascript实现UTF8编码转换成gb2312编码
Dec 22 Javascript
基于jQuery的获得各种控件Value的方法
Nov 19 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
Apr 02 Javascript
js中方法重载如何实现?以及函数的参数问题
Aug 01 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
Mar 03 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
Nov 20 Javascript
基于javascript实现全屏漂浮广告
Mar 31 Javascript
JS定义类的六种方式详解
May 12 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
Aug 04 Javascript
React Native 集成jpush-react-native的示例代码
Aug 16 Javascript
使用jQuery给Table动态增加行、清空table的方法
Sep 05 jQuery
Vue 配合eiement动态路由,权限验证的方法
Sep 26 Javascript
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也可以?成Shell Script
2006/10/09 PHP
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
常用jQuery代码分享
2015/07/14 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python不带重复的全排列代码
2013/08/13 Python
python+mysql实现简单的web程序
2014/09/11 Python
python图像处理之反色实现方法
2015/05/30 Python
Python进程间通信之共享内存详解
2017/10/30 Python
python 实现识别图片上的数字
2019/07/30 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
Python和Sublime整合过程图示
2019/12/25 Python
初学者学习Python好还是Java好
2020/05/26 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
禁烟标语大全
2014/06/11 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
2014年党总支工作总结
2014/12/18 职场文书
关于远足的感想
2015/08/10 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL