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 相关文章推荐
Ext grid 添加右击菜单
Nov 26 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
Jun 23 Javascript
JavaScript省市区三级联动菜单效果
Sep 21 Javascript
用move.js库实现百叶窗特效
Feb 08 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
浅谈箭头函数写法在ReactJs中的使用
Aug 22 Javascript
vue在使用ECharts时的异步更新和数据加载详解
Nov 22 Javascript
JS实现百度网盘任意文件强制下载功能
Aug 31 Javascript
vue中使用vue-cli接入融云实现即时通信
Apr 19 Javascript
node爬取新型冠状病毒的疫情实时动态
Feb 06 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
Aug 10 Javascript
Postman环境变量全局变量使用方法详解
Aug 13 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 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
js DOM的学习笔记
2011/12/22 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
Python 文件管理实例详解
2015/11/10 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
python三方库之requests的快速上手
2019/03/04 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
python里glob模块知识点总结
2021/01/05 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
幼儿园秋游感想
2014/03/12 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA