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乱码的一次解决过程 图解教程
Feb 20 Javascript
基于jQuery的投票系统显示结果插件
Aug 12 Javascript
jQuery圆形统计图开发实例
Jan 04 Javascript
Javascript之面向对象--封装
Dec 02 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
Jan 06 Javascript
JS ES6多行字符串与连接字符串的表示方法
Apr 26 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
JS如何设置元素样式的方法示例
Aug 28 Javascript
vue input输入框模糊查询的示例代码
May 22 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
json字符串对象转换代码实例
Sep 28 Javascript
vue实现数据控制视图的原理解析
Jan 07 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 curl 伪造IP来源的实例代码
2012/11/01 PHP
php实现购物车功能(上)
2020/07/23 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
js密码强度检测
2016/01/07 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
canvas实现图片根据滑块放大缩小效果
2017/02/24 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
js实现一个简易计算器
2020/03/30 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
python将音频进行变速的操作方法
2020/04/08 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
教育科研先进个人材料
2014/01/26 职场文书
医生见习报告范文
2014/11/03 职场文书
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android