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 相关文章推荐
JQuery Tab选项卡效果代码改进版
Apr 01 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
Dec 12 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
Apr 01 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
Jun 05 Javascript
jquery让指定的元素闪烁显示的方法
Mar 17 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
May 13 Javascript
浅谈JavaScript的函数及作用域
Dec 30 Javascript
详解JavaScript中return的用法
May 08 Javascript
基于JSON数据格式详解
Aug 31 Javascript
微信小程序自定义导航栏实例代码
Apr 05 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
Dec 24 Javascript
JS前端广告拦截实现原理解析
Feb 17 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
PHP新手上路(八)
2006/10/09 PHP
php下使用SimpleXML 处理XML 文件
2010/02/27 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
用javascript编写的第一人称射击游戏
2007/02/25 Javascript
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
python练习程序批量修改文件名
2014/01/16 Python
Python抽象类的新写法
2015/06/18 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
python设置环境变量的作用和实例
2019/07/09 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
python简单的三元一次方程求解实例
2020/04/02 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
护理自荐信范文
2013/10/05 职场文书
中专生自我鉴定范文
2013/12/19 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
python如何进行基准测试
2021/04/26 Python
Java基础——Map集合
2022/04/01 Java/Android