js 默认的参数、可变的参数、变量作用域
可以通过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 默认的参数、可变的参数、变量作用域的更多相关文章
- Java可变参数/可变长参数
Java可变参数/可变长参数 传递的参数不确定长度,是变长的参数,例如小例子: package demo; public class Demo { public static int sum(int ...
- Python3_函数参数传递、可变与不可变对象、变量作用域、函数返回值
参数传递: 在 python 中,类型属于对象,变量是没有类型的:(变量都仅仅是一个对象的引用,没有类型之分)a=[1,2,3] a="Runoob" 以上代码中,[1,2,3] ...
- 第十一篇 Python函数之定义&形参&实参&位置参数&关键字参数&可变长参数&默认参数
函数的定义:函数是为了完成某一特定功能的,函数是逻辑结构化和过程化的一种编程方法 函数的定义格式,函数一般都是有返回值的 #语法 #函数名要能反映其意义 def 函数名(参数1,参数2,参数3,... ...
- 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)
详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类 Python中函数参数定义及调用函数时传参 ...
- [python][oldboy]关键字参数和位置参数,默认参数,可变长参数(无名,有名)
关键字参数和位置参数是在函数调用的时候定义 关键字参数是以键-值对出现,无序,多一个不行,少一个不行 位置参数,有序,多一个不行,少一个不行 混搭:所有位置参数必须在关键字参数的左边 默认参数是在函数 ...
- 函数、可变参数、keyword-only参数、实参解构
函数的数学定义:y=f(x) ,y是x的函数,x是自变量.y=f(x0, x1, ..., xn) python中的函数: 由函数名称.参数列表.和若干语句组成的语句块构成,完成一定的功能,是组织代码 ...
- [转]深度探索C语言函数可变长参数
转自:http://www.cnblogs.com/chinazhangjie/archive/2012/08/18/2645475.html 一.基础部分 1.1 什么是可变长参数 可变长参数:顾名 ...
- C++ 系列:函数可变长参数
一.基础部分 1.1 什么是可变长参数 可变长参数:顾名思义,就是函数的参数长度(数量)是可变的.比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的.下面是 printf ...
- Day14_78_可变长参数
可变长参数 可变长参数只能在形参列表的最后一个,且只能出现一次. 代码实例 import java.util.Date; public class 可变长参数 { public static void ...
随机推荐
- 单点登录SSO的实现原理
单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得 ...
- Expression Blend 4 激活码
Expression Blend 4 激活码: 6WDDQ-K7D4F-GQGF4-2VYBJ-8K6MB
- jsp+urlrewrite实现html分页简单粗暴实现
今天去检查一同事写的一分页实现,看了有点郁闷,都说了要换成html实现方便搜索引擎收录,他还是用的js,真是晕.还得帮他解决 好吧.言归正传,我在他的基础上粗暴的修改了下,达到了基本的效果,带数字分页 ...
- spring 最全MAVEN 依赖引入配置
<properties> <spring.version>4.1.6.RELEASE</spring.version> </properties> &l ...
- iOS性能优化中的离屏渲染
GPU屏幕渲染有以下两种方式: On-Screen Rendering意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行. Off-Screen Rendering意为离屏渲染 ...
- BA的广度和深度
http://insights.thoughtworkers.org/ba-capability-and-development-path-in-thoughtworks/ 作者:ThoughtWor ...
- 使用Pager-taglib进行分页
在.net中,我们有分页控件.在java中,我们有分页标签库.他们都已经为我们封装好了,我们只需要给这几个参数:数据.当前页码.每页记录数,就能完成分页,所以他们是大同小异的. 今天来说说Pager- ...
- 【Java】通过DES加密和解密工具,对字符串进行加密和解密操作
分享一个非常不错的字符串加密和解密的程序. 可以指定不同的密钥对同一字符串进行不同的加密操作,增强加密性能. Java代码如下: package com.app; import java.securi ...
- eclipse通过classpath variable引用类库
众所周知.eclipse的project bulid path中能够引用第三方类库(如图1). 图1 可是这样的方式有个缺点:对类库的引用是通过绝对路径.假设有两台电脑(办公室1台.家1台),非常可能 ...
- [Javascript + rxjs] Using the map method with Observable
Like an array, Observable has a map method that allows us to transform a sequence into a new Observa ...