JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例


Posted in Javascript onJune 29, 2013

javascript:变量的声明
以下是几种声明变量的方式

 var value;
 var value,value1,value2;//同时声明多个变量,但是这些变量的值都是undefined
 var i = 0,j = 0,k=100;//变量声明,初始化一体。
 //如果大家尝试读一个不存在的变量(值)会报错!但是尝试给一个未使用Var声明的变量赋值,javascript
 //会隐式的声明改变量,而且声明了的变量还是全局的。细节:所以大家创建变量都尽量使用Var
 //变量的作用域(这个问题也容易出,大家要搞明白)

javascript:变量的作用域
 这些都是细节,和我一样初学的一定要注意避免!
var golbal = "golbal"; //全局变量
 var local ="local";
function area()
 {
//局部变量的优先级比全局变量的高
var local = "arealocal"
//当函数体内声明的变量名和全局变量名相同时,javascript 会隐藏全局变量
var golbal ="areagolbal"; document.write("local is :"+local + "and golbal is :" + golbal +"<br />");
 }
area();
//输出:local is :arealocaland golbal is :areagolbal

在嵌套的函数里面定义局部变量,效果会怎么样呢?看下面:
var hope = "moremoney";
function createmore()
{
var hope = "have more money";//局部
function createmoreto()//嵌套函数
{
var hope = "have more money to much";//局部
document.write("Createmoreto hope is :"+hope +"<br />");
  //输出:Createmoreto hope is :have more money to much
}
 createmoreto();//调用
 document.write("Createmore hope is :" +hope +"<br />");
//输出:Createmore hope is :have more money
}
 createmore(); //调用

javascript:传值和传址
这里也是比较重要的概念!不要漏了。

  传值 传址
复制 实际复制的值,存在不同的、独立的拷贝。 复制的只是对数字的引用。如果通过这个新的引用修改了数值,这个改变对最初的引用来说也是可见的。
传递 传递给函数的是值的独立拷贝对它的改变在函数外没有影响 传递给函数的是对数值的引用,如果函数通过传递给它的引用修改了数值,这个改变也是可见的。
比较 比较这两个对立的值,通常逐字节的比较,以判断是否相等 比较的是两个引用,以判断它们引用的是否是同一个数值。

javascript:基本类型和引用类型

javascript的基本规则是:基本类型通过传值来操作,引用类型通过传址来操作。(什么事值类型,或者什么事引用看我上一篇)
按值传递

 var value = 1;
 var copyvalue = value; //将value赋给另一个变量
  function addTotal(total,arg)
  {
 total+= arg; //total = total + arg 效果等同
 }
 //调用函数,传两个参数(大家可能会认为这个函数改变了全局变量的值,其实没有,函数用的也是对立拷贝)
 addTotal(value,copyvalue); 
 if(value == 1) copyvalue = 2;
 document.write("total \t" + value + "and copyvalue \t\t" + copyvalue+"<br />");
 //最后输出:total 1and copyvalue 2

按址传递
 var array = new Array("Javascccp");
 var objarray = array;
 function modifyArray(arr)
 {
 arr[0] = "JAVASCRIPT";
 }
 //没调用函数前
 document.write(array[0] +"<br />");
 //输出Javascccp;
 //调用函数后
 modifyArray(array);
 document.write(array[0]+"<br />");
 //输出大写JAVASCRIPT
 //通过修改objarray会是一样的效果
 objarray[0] = "Frank";
 document.write(array[0]+"<br />");
  //输出Frank;

小结:上面内容希望大家都不要错过,对学习后面的知识还是很有帮助的!
Javascript 相关文章推荐
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 Javascript
有趣的JavaScript数组长度问题代码说明
Jan 20 Javascript
javascript汉字拼音互转的简单实例
Oct 09 Javascript
JS实现图片点击后出现模态框效果
May 03 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
Mar 25 jQuery
js中的数组对象排序分析
Dec 11 Javascript
微信小程序textarea层级过高的解决方法
Mar 04 Javascript
如何实现一个简易版的vuex持久化工具
Sep 11 Javascript
Vue 的双向绑定原理与用法揭秘
May 06 Javascript
微信小程序点击滚动到指定位置的实现
May 22 Javascript
Javascript基于OOP实实现探测器功能代码实例
Aug 26 Javascript
JavaScript如何实现防止重复的网络请求的示例
Jan 28 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
Jun 29 #Javascript
js操作checkbox遇到的问题解决
Jun 29 #Javascript
JavaScript自执行闭包的小例子
Jun 29 #Javascript
JS自动适应的图片弹窗实例
Jun 29 #Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
Jun 28 #Javascript
Ext JS添加子组件的误区探讨
Jun 28 #Javascript
Javascript实现重力弹跳拖拽运动效果示例
Jun 28 #Javascript
You might like
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
php实现简单加入购物车功能
2017/03/07 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
python全局变量引用与修改过程解析
2020/01/07 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
中科软笔试题和面试题
2014/10/07 面试题
幼儿教师寄语集锦
2014/04/03 职场文书
个人委托书怎么写
2014/04/04 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
分公司负责人任命书
2014/06/04 职场文书
工作所在部门证明
2014/09/21 职场文书
运动会通讯稿200字
2015/07/20 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers