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 相关文章推荐
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
Dec 22 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
May 06 Javascript
javascript AutoScroller 函数类
May 29 Javascript
Javascript 自定义类型方法小结
Mar 02 Javascript
LABjs、RequireJS、SeaJS的区别
Mar 04 Javascript
给html超链接设置事件不使用href来完成跳
Apr 20 Javascript
Bootstrap实现响应式导航栏效果
Dec 28 Javascript
jQuery简单实现提交数据出现loading进度条的方法
Mar 29 Javascript
jquery+css实现简单的图片轮播效果
Aug 07 jQuery
Node.js中环境变量process.env的一些事详解
Oct 26 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
JavaScript变量提升和严格模式实例分析
Jan 27 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数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
JavaScript EasyPager 分页函数
2011/05/25 Javascript
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
使用pdb模块调试Python程序实例
2015/06/02 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
创联软件面试题笔试题
2012/10/07 面试题
J2EE面试题集锦(附答案)
2013/08/16 面试题
大学生职业生涯规划范文
2013/12/31 职场文书
搞笑的获奖感言
2014/08/16 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL