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 相关文章推荐
js 动态选中下拉框
Nov 26 Javascript
Node.js中child_process实现多进程
Feb 03 Javascript
javascript实现uploadify上传格式以及个数限制
Nov 23 Javascript
AngularJS应用开发思维之依赖注入3
Aug 19 Javascript
JavaScript操作文件_动力节点Java学院整理
Jun 30 Javascript
js模块加载方式浅析
Aug 12 Javascript
vue引用js文件的多种方式(推荐)
May 17 Javascript
layui弹出层按钮提交iframe表单的方法
Aug 20 Javascript
4个顶级开源JavaScript图表库
Sep 29 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
Sep 23 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
Oct 20 Javascript
Angular处理未可知异常错误的方法详解
Jan 17 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
递归列出所有文件和目录
2006/10/09 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
深入浅析用PHP实现MVC
2016/03/02 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
PHP函数积累总结
2019/03/19 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
layui表格数据重载
2019/07/27 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
python开发入门——set的使用
2020/09/03 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
班组长工作职责
2013/12/25 职场文书
花店创业计划书范文
2014/02/07 职场文书
承诺书范文
2014/06/03 职场文书
《观察物体》教学反思
2016/02/17 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
Python列表的索引与切片
2022/04/07 Python
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android