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 相关文章推荐
User Scripts: Video Download by User Scripts
May 14 Javascript
JavaScript 组件之旅(四):测试 JavaScript 组件
Oct 28 Javascript
浅析ajax请求json数据并用js解析(示例分析)
Jul 13 Javascript
jquery购物车实时结算特效实现思路
Sep 23 Javascript
JS获取单击按钮单元格所在行的信息
Jun 17 Javascript
前端js文件合并的三种方式推荐
May 19 Javascript
基于Bootstrap+jQuery.validate实现表单验证
May 30 Javascript
JavaScript简单实现弹出拖拽窗口(一)
Jun 17 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
Dec 08 Javascript
详解利用jsx写vue组件的方法示例
Jul 17 Javascript
Three.js实现浏览器变动时进行自适应的方法
Sep 26 Javascript
微信小程序实现星星评价效果
Nov 02 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
PHP4与PHP5的时间格式问题
2008/02/17 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
layui导航栏实现代码
2017/05/19 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
详解Python中的变量及其命名和打印
2016/03/11 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
简单谈谈python中的语句和语法
2017/08/10 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
python输出数学符号实例
2020/05/11 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
财产分割协议书范本
2014/11/03 职场文书
化验员岗位职责
2015/02/14 职场文书
2016春节慰问信范文
2015/03/25 职场文书
搞笑结婚保证书
2015/05/08 职场文书