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字符串连接性能问题有争议
Jan 12 Javascript
使用jQuery获得内容以及内容的属性
Feb 26 Javascript
JS实现的Select三级下拉菜单代码
Aug 20 Javascript
js实现的早期滑动门菜单效果代码
Aug 27 Javascript
JavaScript性能优化之小知识总结
Nov 20 Javascript
javascript基础语法学习笔记
Jan 04 Javascript
JS判断iframe是否加载完成的方法
Aug 03 Javascript
微信小程序 视图容器组件的详解及实例代码
Jan 19 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
Apr 28 Javascript
vue项目打包部署_nginx代理访问方法详解
Sep 20 Javascript
超轻量级的js时间库miment使用解析
Aug 02 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
Aug 20 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
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
yii用户注册表单验证实例
2015/12/26 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
python 提取文件的小程序
2009/07/29 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
Python日志处理模块logging用法解析
2020/05/19 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
大学生毕业自荐信
2013/10/10 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
电钳工人个人求职信
2014/05/10 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis
postgresql中如何执行sql文件
2023/05/08 PostgreSQL