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 相关文章推荐
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 Javascript
jquery 常用操作整理 基础入门篇
Oct 14 Javascript
javascript:void(0)的作用示例介绍
Oct 28 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
Nov 20 Javascript
深入剖析JavaScript中的函数currying柯里化
Apr 29 Javascript
Bootstrap模态框禁用空白处点击关闭
Oct 20 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
Jun 02 Javascript
Canvas放置反弹效果随机图形(实例)
Aug 17 Javascript
jQuery中实现text()的方法
Apr 04 jQuery
electron+vue实现div contenteditable截图功能
Jan 07 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 15 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 全局变量范围分析
2009/08/07 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
JS自动缩小超出大小的图片
2012/10/12 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
js实现录音上传功能
2019/11/22 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
Python标准库之循环器(itertools)介绍
2014/11/25 Python
python集合类型用法分析
2015/04/08 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
10张动图学会python循环与递归问题
2021/02/06 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
师范应届生语文教师求职信
2013/10/29 职场文书
出纳员岗位职责
2014/03/13 职场文书
小学语文教学随笔
2015/08/14 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs