JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例

 更新时间:2013年06月29日 15:35:32   作者:  
这篇文章介绍了变量的作用域,传值,传址的一些简单使用,有需要的朋友可以参考一下

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;

小结:上面内容希望大家都不要错过,对学习后面的知识还是很有帮助的!

相关文章

  • (function(){})()的用法与优点

    (function(){})()的用法与优点

    (function(){})()的用法与优点...
    2007-03-03
  • 小程序自定义组件实现城市选择功能

    小程序自定义组件实现城市选择功能

    这篇文章主要介绍了小程序自定义组件实现城市选择功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • JavaScript  函数语法详解

    JavaScript 函数语法详解

    本文结合前面发布的文章,详细介绍了javascript的函数语法,非常的详尽,非常的实用,这里推荐给大家,是篇不可多得的文章
    2021-09-09
  • 原生javascript实现图片放大镜效果

    原生javascript实现图片放大镜效果

    这篇文章主要为大家详细介绍了原生javascript实现图片放大镜效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • JS实现简单拖动模态框案例

    JS实现简单拖动模态框案例

    这篇文章主要为大家详细介绍了JS实现简单拖动模态框案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 在uniapp中如何去掉一些不想要的权限

    在uniapp中如何去掉一些不想要的权限

    在uniapp中,云打包以后会自动增加一个电话权限,并且在manifest.json里面也没有添加这个权限,怎么添加都添加不上,下面小编给大家分享在uniapp中如何去掉一些不想要的权限,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • js left,right,mid函数

    js left,right,mid函数

    在JAVASCRIPT中LEFT,RIGHT,MID函数的等价函数,非常适合经常用写asp的朋友
    2008-06-06
  • layui使用label标签的方法

    layui使用label标签的方法

    今天小编就为大家分享一篇layui使用label标签的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • javascript断点调试心得分享

    javascript断点调试心得分享

    javascript中程序是怎么可以中断执行,然后一步一步走下去。而且debug的时候,可以看到变量,调用栈等东西。这个是如何实现的?
    2016-04-04
  • 微信小程序实现上传视频功能

    微信小程序实现上传视频功能

    这篇文章主要为大家详细介绍了微信小程序实现上传视频功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08

最新评论