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 getComputedStyle获取和设置style的原理
Oct 10 Javascript
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
基于JQuery.timer插件实现一个计时器
Apr 25 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
Apr 08 Javascript
js arguments,jcallee caller用法总结
Nov 30 Javascript
深入浅析AngularJS中的module(模块)
Jan 04 Javascript
一种angular的方法级的缓存注解(装饰器)
Mar 13 Javascript
mpvue性能优化实战技巧(小结)
Apr 17 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
Sep 23 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
Apr 28 Javascript
Vue使用Three.js加载glTF模型的方法详解
Jun 14 Javascript
webpack介绍使用配置教程详解webpack介绍和使用
Jun 25 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读取30天之内的根据算法排序的代码
2008/04/06 PHP
php读取msn上的用户信息类
2008/12/05 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
跟我学习javascript的严格模式
2015/11/16 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
js验证密码强度解析
2020/03/18 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
Python中字符串的修改及传参详解
2016/11/30 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
金融管理专业毕业生求职信
2014/03/12 职场文书
服装设计专业求职信
2014/06/16 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
python实现简易名片管理系统
2021/04/11 Python