在js函数与作用域,了解函数基本概念中,我们发现当函数的实参有一个没有上传的时候,对应的形参time展示的值就是undefined,如下代码所示:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>函数的默认值问题</title>
<script>
function myshelf(num,time)
{//默认值time=>undefined
for(var a=1;a<=num;a++)
{
console.log(time+'点第'+a+'遍'+'好好学习,天天向上');
}
}
var time=7;
myshelf(10) ;// 有一个实参没有传;
var time=7;
myshelf(10,12) ;// var time=12;
</script>
</head>
<body>
</body>
</html>

怎么解决函数默认值undefined的情况,可以用if条件语句,或者逻辑或.用方式一,含义是如果time的默认值等于undefined,那么此时time值等于7,否则不执行此语句;方式二:time=time或者time=8,前者是如果time=time,那么此时就传入了实参,不执行后面的语句或者是time=8,说明此时没有传值进来,那么函数此时time的默认值为8

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>函数默认值undefined解决2种方式</title>
<script>
function myshelf(num,time)
{//默认值time=>undefined // if(time==undefined)
// time=7; //方式一:if条件语句 time=time||8; //方式二:逻辑或 for(var a=1;a<=num;a++)
{
console.log(time+'点第'+a+'遍'+'好好学习,天天向上');
}
}
var time=7;
myshelf(10) ;
var time=7;
myshelf(10,12) ;
</script>
</head>
<body>
</body>
</html>

函数除了默认值还有动态参数,比方说我想要这些数字add(1,2,4,5,23)全部相加,但是在return z=x+y的情况下下只是相加2个数字,那么其他的数字能不能相加了,当然是可以的,怎么办了?这时候就用到了我们的动态数组arguments了,函数add(1,2,4,5,23)这里面的数值都以数组的形式传递到定义的function里面执行,此时的arguments=>[1,2,4,5,23]约等于,定义function里面的x,y对应x=arguments[0];y=arguments[1];数值的计算用到for循环的数组遍历,数组的长度为length*此时function add(x,y)里面的x,y可以不用写.

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>动态参数arguments</title>
<script>
// function add(x,y){//加法 函数得定义
// //[1,2,4,5,23]
// return x+y;
// }
// var rs=add(1,2,4,5,23); //函数得调用
// console.log('1+2 4,5,23='+rs);
// var rs=add(3,4);
// console.log('3+4='+rs);
//==========================无情分割线===============================
function add(x,y){
// var arguments=>[1,2,4,5,23]
// x=arguments[0];
// y=arguments[1];
var z=0;
for(var i=0;i<arguments.length;i++){
z+=arguments[i];
}
return z;
//return z=x+y;
}
var rs=add(1,2,4,5,23);
console.log('1+2+4+5+23='+rs);
var rs=add(3,4);
console.log('3+4='+rs);
var rs=add(111,222,333,444,555);
console.log('111+222 333,444,555='+rs);
</script>
</head>
<body>
</body>
</html>

函数的默认值与动态参数arguments的总结的更多相关文章

  1. 为什么C++函数形参默认值从最末一个赋值?

    [1]函数调用时形参的压栈顺序 1.示例代码如下(VS2010): #include <iostream> using namespace std; ); void fun(int a, ...

  2. php函数指定默认值的方法

    发布:JB02   来源:脚本学堂     [大 中 小] 本文介绍下,在php编程中,指定函数的默认值的方法,分享二个例子,供大家学习参考下.本文转自:http://www.jbxue.com/ar ...

  3. C#语法糖之第二篇: 参数默认值和命名参数 对象初始化器与集合初始化器

    今天继续写上一篇文章C#4.0语法糖之第二篇,在开始今天的文章之前感谢各位园友的支持,通过昨天写的文章,今天有很多园友们也提出了文章中的一些不足,再次感谢这些关心我的园友,在以后些文章的过程中不断的完 ...

  4. es6(三):es6中函数的扩展(参数默认值、rest参数、箭头函数)

    1.函数可以设置参数默认值 function test1(x,y=1){ console.log(x,y) } test1(10)//10 1 2.rest参数:形式为...变量名 function ...

  5. python12--字符串的比较 函数的默认值的细节 三元表达式 函数对象 名称空间 作用域 列表与字典的推导式 四则运算 函数的嵌套

     复习   1.字符串的比较; 2.函数的参数; ******实参与形参的分类: 3.函数的嵌套调用:     # 字符串的比较#  -- 按照从左往右比较每一个字符,通过字符对应的ascii进行比较 ...

  6. python学习Day12 函数的默认值、三元表达式、函数对象(函数名)的应用场景、名称空间与作用域

    复习 1.字符串的比较: -- 按照从左往右比较每一个字符,通过字符对应的ascii进行比较 2. 函数的参数 : 1)实参与形参:       -- 形参:在函数定义时()中出现的参数       ...

  7. ES6参数默认值,剩余参数及展开数组

    一.函数的参数默认值 在ES6之前,想要给参数设置默认值得话,只能在函数体内部加判断设置,比如如果传递参数为undefined时为true, 否则为false,如下图example1,ES6出现语法可 ...

  8. 【函数】plsql 函数的默认值

    1.创建函数 CREATE OR REPLACE FUNCTION fk_url_format(url VARCHAR2,charset VARCHAR2 :='UTF-8')RETURN VARCH ...

  9. oracle 函数的返回值与out参数

    函数的return值是调用函数返回的结果. 而out参数就是单纯的赋值. 例子: function test(aaa in varchar, bbb out integer) return integ ...

随机推荐

  1. Mavn 项目 引入第三方jar包 导致ClassNotFoundException

    案例 我有一个Maven构建的项目,项目模块之间有依赖关系,我需要用到一个本地的jar包,而该jar包不能通过配置pom.xml文件从远程仓库自动下载,于是我直接导入该jar包到其中一个项目,不通过p ...

  2. 啥?你想diy一个智能音箱,来吧

    没错,这是智zhang语音助手 本系统基于自美系统二次开发,添加连接EMQ服务器,语音远程控制LED(Nodemcu),当然也可以扩展控制更多的设备,只需要将下位机设备连接到EMQ服务器即可. 由于使 ...

  3. LinearLayout中组件右对齐

    在LinearLayout中,如果将其定位方向设为横向排列:android:orientation="horizontal",那么这个布局中的控件将自左向右排列. 但有时会有这样的 ...

  4. Qt qApp

    qApp A global pointer referring to the unique application object. It is equivalent to the pointer re ...

  5. 每日一练PAT_B_PRAC_1005斐波那契凤尾

    NowCoder号称自己已经记住了1-100000之间所有的斐波那契数.为了考验他,我们随便出一个数n,让他说出第n个斐波那契数.当然,斐波那契数会很大.因此,如果第n个斐波那契数不到6位,则说出该数 ...

  6. C# 接口和继承

    转:https://www.cnblogs.com/songhe123/p/9558545.html 接口是方法的抽象,如果不同的类有同样的方法,那么就应该考虑使用接口. 例1: using Syst ...

  7. Codeforces_831

    A.线性判断. #include<bits/stdc++.h> using namespace std; ] = {}; int main() { ios::sync_with_stdio ...

  8. centos7 手把手从零搭建深度学习环境 (以TensorFlow2.0为例)

    目录 一. 搭建一套自己的深度学习平台 二. 安装系统 三. 安装NVIDA组件 四. 安装深度学习框架 TensorFlow 五. 配置远程访问 六. 验收 七. 福利(救命稻草

  9. jquery deferred 转载

    阮一峰的网络日志 » 首页 » 档案 JavaScript http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquer ...

  10. Python原来这么好学-2.1节: 选择PyCharm作为开发工具

    这是一本教同学们彻底学通Python的高质量学习教程,认真地学习每一章节的内容,每天只需学好一节,帮助你成为一名卓越的Python程序员: 本教程面向的是零编程基础的同学,非科班人士,以及有一定编程水 ...