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 相关文章推荐
用JS实现的一个include函数
Jul 21 Javascript
执行iframe中的javascript方法
Oct 07 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
Sep 14 Javascript
div层的移动及性能优化
Nov 16 Javascript
jquery获取radio值实例
Oct 16 Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 Javascript
利用JS hash制作单页Web应用的方法详解
Oct 10 Javascript
vue-lazyload使用总结(推荐)
Nov 01 Javascript
Javascript读写cookie的实例源码
Mar 16 Javascript
详解mpvue实现对苹果X安全区域的适配
Jul 31 Javascript
9种方法优化jQuery代码详解
Feb 04 jQuery
Vue实现跑马灯效果
May 25 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
文章推荐系统(二)
2006/10/09 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
js文字横向滚动特效
2015/11/11 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
python删除不需要的python文件方法
2018/04/24 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
鲜果饮品店创业计划书
2014/01/21 职场文书
奖励通知
2015/04/22 职场文书
奖励申请报告范文
2015/05/15 职场文书
公司宣传语大全
2015/07/13 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python
Python加密与解密模块hashlib与hmac
2022/06/05 Python