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截取中文字符串的实现代码
Dec 22 Javascript
使用js检测浏览器的实现代码
May 14 Javascript
js如何获取file控件的完整路径具体实现代码
May 15 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
Mar 18 Javascript
js实现使用鼠标拖拽切换图片的方法
May 04 Javascript
JavaScript运算符小结
Jun 03 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
three.js实现围绕某物体旋转
Jan 25 Javascript
ES6新特性三: Generator(生成器)函数详解
Apr 21 Javascript
node+vue实现用户注册和头像上传的实例代码
Jul 20 Javascript
微信小程序template模板实例详解
Oct 27 Javascript
微信小程序访问豆瓣电影api的实现方法
Mar 31 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
第八节 访问方式 [8]
2006/10/09 PHP
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
简单实现php上传文件功能
2017/09/21 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
使用Django清空数据库并重新生成
2020/04/03 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
综合测评自我鉴定
2013/10/08 职场文书
中国好声音华少广告词
2014/03/17 职场文书
会计核算科岗位职责
2014/03/19 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
2014年租房协议书范本
2014/10/30 职场文书
物资采购管理制度
2015/08/06 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
2019财务转正述职报告
2019/06/27 职场文书