可以通过arguments对象来实现可变的参数

在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。

arguments是一个数组对象,可以通过下标来实别参数的位置,通过.length来获参数的个数。

代码实例:我们通过arguments来改变函数的默认参数

 <script>
function demo(x,y){
x = arguments[0]?arguments[0]:1; //arguments[0]代表demo函数的参数第一个
y = arguments[1]?arguments[1]:2; //arguments[1]代表demo函数的参数第二个
return x+y
}
alert(demo(4,5)) //我们调用函数的参数=>9
alert(demo()) //我们调用默认参数 =>3
</script>

代码实例:通过arguments.length来获取参数的长度所实现的参数和

 <script>
function demo(){
var count = arguments.length //把参数的长度保存的count的变量中
var sum =0 //声名一个总和的变量
for(var i =0;i<count;i++){ //使用for循环把所有参数的长度遍历出来
sum+=arguments[i] //求出每个arguments所对应下标的参数的值相加
}
return sum //把值返回给函数
}
alert(demo(1,2,3,4,5,6)) //=>把自己定义的参数传入,=>21
</script>

代码实例:通过arguments.length再来获取参数的长度所实现的参数最大值

 <script>
function demo(){
var count = arguments.length //把参数的长度保存的count的变量中
var max =0 //声名一个最大值
for(var i =0;i<count;i++){ //使用for循环把所有参数的长度遍历出来
if(arguments[i]>max){ //做一个if语句的判断,遍历出来所有最大值依次给与max,直接便利结束
max = arguments[i]
}
}
return max //把值返回给函数
}
alert(demo(10,20,1,4,11)) //=>把自己定义的参数传入,=>20
</script>

 变量的作用域:

 全局变量和局部变量的区别:

 全局在函数体外声名,从脚开始可以用到脚本结束。

 局部变量在函数体内声名变量只能在函数体内进行使用。

代码示例:

 <script>
var x = "全局变量x";
function demo(){
var x = "局部变量x";
alert(x)
}
demo() //=>先是弹出局布变量x,因为我们调用函数执行代码块,因为x是在函数体内声名的与全局变量不冲突
alert(x) //=>再是弹出全局变量x,因为我们是在函数体外alert(x),只能调用到全局函数的变量,当函数执行完成,自动会回收掉函数体的内容
</script>

最好使用var语句来声名变量:

代码示例 :

 <script>
var x =1
function demo(){
x =2 //如果函数体内变量没有加var关键字,则这个变量则自动变为全局变量
alert(x)
}
demo() //=>输出结果为2
alert(x) //=>此时输出结果也为2,因为函数体内的变量用的是全局变量,变量重名赋值时会被覆盖掉
</script>

用一段混合型的代码示列来全面解析全局变量和局部变量

 <script>
//解析一下全局变量和局部变量
var x = 1,y =2; //这是在script脚本内,函数体外声明的两个全局变量x和y
function demo(x,y){
document.write(x) //=>undefined 因为在调用函数的时候没有写入参数,没有值的参数默认为undefined
document.write(y) //同上
var x = 5,y =6; //在此在函数体内声明了两个局部变量x和y
document.write(x) //由于js代码是从上到下执行的,此时的x用的是局部变量x
document.write(y) //同上
z =x+y //在函数体内声明了一个没有加var的z,此是它是全局变量,但是由是在函数体内赋值,用的x,y都是局部变量
document.write(z) //=>输出结果为11
}
demo()
alert(z) //由于z是全局变量,还是可以在函数外取到z的值 =>11
alert(x) //=>1 在函数体外得到x,得到的是全局变量x
alert(y) //同上
</script>

js 默认的参数、可变的参数、变量作用域的更多相关文章

  1. Java可变参数/可变长参数

    Java可变参数/可变长参数 传递的参数不确定长度,是变长的参数,例如小例子: package demo; public class Demo { public static int sum(int ...

  2. Python3_函数参数传递、可变与不可变对象、变量作用域、函数返回值

    参数传递: 在 python 中,类型属于对象,变量是没有类型的:(变量都仅仅是一个对象的引用,没有类型之分)a=[1,2,3] a="Runoob" 以上代码中,[1,2,3] ...

  3. 第十一篇 Python函数之定义&形参&实参&位置参数&关键字参数&可变长参数&默认参数

    函数的定义:函数是为了完成某一特定功能的,函数是逻辑结构化和过程化的一种编程方法 函数的定义格式,函数一般都是有返回值的 #语法 #函数名要能反映其意义 def 函数名(参数1,参数2,参数3,... ...

  4. 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)

    详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参 ...

  5. [python][oldboy]关键字参数和位置参数,默认参数,可变长参数(无名,有名)

    关键字参数和位置参数是在函数调用的时候定义 关键字参数是以键-值对出现,无序,多一个不行,少一个不行 位置参数,有序,多一个不行,少一个不行 混搭:所有位置参数必须在关键字参数的左边 默认参数是在函数 ...

  6. 函数、可变参数、keyword-only参数、实参解构

    函数的数学定义:y=f(x) ,y是x的函数,x是自变量.y=f(x0, x1, ..., xn) python中的函数: 由函数名称.参数列表.和若干语句组成的语句块构成,完成一定的功能,是组织代码 ...

  7. [转]深度探索C语言函数可变长参数

    转自:http://www.cnblogs.com/chinazhangjie/archive/2012/08/18/2645475.html 一.基础部分 1.1 什么是可变长参数 可变长参数:顾名 ...

  8. C++ 系列:函数可变长参数

    一.基础部分 1.1 什么是可变长参数 可变长参数:顾名思义,就是函数的参数长度(数量)是可变的.比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的.下面是 printf ...

  9. Day14_78_可变长参数

    可变长参数 可变长参数只能在形参列表的最后一个,且只能出现一次. 代码实例 import java.util.Date; public class 可变长参数 { public static void ...

随机推荐

  1. Java 字符转码之UTF-8转为GBK/GB2312

    java跟python类似的做法,在java中字符串的编码是java修改过的一种Unicode编码,所以看到java中的字符串,心理要默念这个东西是java修改过的一种Unicode编码的编码. pa ...

  2. 腾讯sdk配置

    android-mirror.bugly.qq.com

  3. nginx查看进程连接信息

    linux 中查看当前请求连接的进程统计信息 root@VM-24-181-ubuntu:/# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) ...

  4. 如何引入一个Schema 文件

    Schema(掌握如何引入一个schema文件)    * 名称空间 : 指的是一个环境,所用的标签来自于哪个环境定义的.    * 掌握引用schema文件:             xml中引入s ...

  5. JavaScript效果之选项卡

    拼了命学习js,想把学到的Javascript效果,可以记在博客里,在记录过程中,加深理解. gogogo,第一个效果,选项卡. 一.选项卡效果的实现思路 选项卡效果的应用很广泛,几乎所有的网站都会用 ...

  6. XML结构文件的读写

    附件:http://files.cnblogs.com/xe2011/XML_Writer_And_Read.rar 下面这段代码实现了以下功能 数据保存 textBox1的文本,textBox2的文 ...

  7. Image控件播放 GIF文件

    uses Vcl.Imaging.GIFImg;procedure TForm1.Button2Click(Sender: TObject);begin    Image1.Picture.LoadF ...

  8. OpenGL ES2学习笔记(9)-- 转换矩阵

    线性代数是计算机图形学的一块基石,本篇文章总结如何在Shader中使用矩阵来移动.缩放和旋转顶点. 代码和效果 把下面的代码复制到OpenGL Console里: import java.nio.By ...

  9. 微信支付 V3版

    本人小菜鸟一仅仅.为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识,小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...

  10. LVM物理卷命令

    1. 物理卷命令  一般维护命令:  #pvscan //在系统的全部磁盘中搜索已存在的物理卷  #pvdisplay 物理卷全路径名称 //用于显示指定物理卷的属性. #pvdata 物理卷全路径名 ...