JS函数(二)

(一)return关键字

  • 关键字return一般结合函数一起使用。而且需要注意,这个关键字一般只能在函数体中使用
  • 作用:
    1.函数体中如果遇见关键字return,函数体后面语句不再执行
    2.函数体中关键字可以将计算完结果返回【函数体外部可以获取函数返回结果】
 //第一个作用function fun(){console.log('水面清圆');console.log('一一风荷举');return;console.log('疏影横斜');}fun();

 //第二个作用function bigStar(){//声明一个局部变量var str = '野渡无人舟自横';//将函数体中数据【计算完结果】返回给函数体外面,函数体外可以获取函数返回结果return str;}var result = bigStar();console.log(result);

 //封装一个函数:函数两个功能是计算两个数之和function add(num1,num2){return num1 + num2;}var result = add(13,45);console.log(result);


(二)练习

  • 概述:函数(function),主要的作用是将某个功能进行封装,我们可以重复利用函数功能
  • 函数使用:分为声明和调用

习题1——水仙花数

 //封装一个函数:判断某数是否为水仙花数,若是,则返回真,否则返回假function isNarcissus(num){//获取当前数字个、十、百var ge = num % 10,shi = parseInt(num / 10 % 10),bai = parseInt(num / 100);//获取当前数字个、十、百的立方var result = Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3);//判断是不是水仙花数字if(result == num){return true;}else{return false;}}var bo1 = isNarcissus(567);var bo2 = isNarcissus(153); console.log(bo1);console.log(bo2);

 /*函数结合循环语句使用在控制台中打印出三位数字当中的水仙花数*/for(var n = 100;n < 1000;n++){if(isNarcissus(n)){console.log(n+'是水仙花数');}}

习题2——完美数

  • 设计一个函数:判断某数是否为完美数字,若是则返回true,否则返回false
  • 完美数字:
    比如:数字6的约数1、2、3之和等于这个数字本身即为完美数字
function isWanMei(num){//累加器var sum = 0;//先找到num变量存储的这个数字的约数有哪些for(var i = 1;i < num;i++){if(num % i == 0){sum += i;}}//经过循环语句遍历以后可以计算出当前数字num的约数之和//判断当前数字是否是完美数if(num == sum){return true;}else{return false;}}//调用函数console.log(isWanMei(45));

 //判断1-1000之间的完美数字有哪些for(var k =1;k <= 1000;k++){if(isWanMei(k)){console.log(k+'是完美数');}}


(三)表达式形式函数

  • 概述:在JS当中函数有两种形式:
    第一种:关键字function定义的函数
    第二种:表达式形式函数,就是将关键字function定义的函数赋值给变量形式
  • 表达式形式的函数中,可以省略关键字形式函数的名字【匿名函数】
//表达式形式函数  声明var poem = function (){console.log('水面清圆');}//表达式形式函数  调用poem();poem();


(四)关键字形式函数与表达式形式函数的区别

  • 概述:两者功能都是一样的(都是可以将某一个功能进行封装,当你想用这个功能的时候,调用即可)
  • 但是,它们两者在使用的时候语法有一些注意事项

  • 表达式形式的函数:只能在声明后才能调用
  • 表达式形式的函数:由于变量声明部分提升(提升到当前作用域最上方),因此是undefined
//表达式形式函数//声明//fun()  注意:此处为错误写法var fun = function (){console.log('我是表达式形式的函数');}fun();

  • 关键字函数可以在声明之前、声明之后调用
  • 由于解析器可以将关键字形式函数的声明部分提升到当前作用域的最上方
isOdd(657);//奇数//声明部分function isOdd(num){if(num % 2 != 0){alert('奇数');}else{alert('偶数');}//调用isOdd(4);isOdd(43);}

(五)回调函数

CallBack回调函数

  • 概述:当一个函数执行的时候,传递的实参是另外一个函数声明部分。这个实参(函数)即为回调函数
 //声明函数function promise(a,b,callback){callback();//在函数体内调用回调函数callback();callback();}//下面函数出现回调函数promise(1,'水面清圆',function(){console.log('我是函数形式的实参,我被执行了');});


(六)函数递归

  • 概述:在很多编程语言中,都有函数直接或间接调用自身这种现象【递归】
 //函数的使用分为两部分:声明和调用function add(){//函数体中可以书写任意语句console.log('水面清圆');//函数调用自身add();//死循环}//调用函数add();

(七)IIFE

(1)概述

【immediately invoing function express】

  • 概述:IIFE在声明表达式形式函数的同时,立刻马上执行一次
 //表达式形式函数    声明部分var fun = function (){console.log('我被执行了');}();
 //只有表达式形式函数声明部分后才能紧随(),立刻执行一次function sun(){console.log('我是关键字形式函数,声明部分之后不能紧随()');}()  //注意:此为错误写法

(2)IIFE其他写法

  • 关键字形式函数后面不能紧随小括号立即执行。但是程序员可以通过一些手段【加、减、非、小括号】,
    将关键字形式函数变为表达式形式函数,立即执行一次(IIFE)
+function (){console.log('+号可以将关键字形式函数变为表达式形式函数');}();-function (){console.log('-号可以将关键字形式函数变为表达式形式函数');}();!function (){console.log('!号可以将关键字形式函数变为表达式形式函数');}();(function (){console.log('()号(包含整个声明部分)可以将关键字形式函数变为表达式形式函数');})();

(3)IIFE的作用域

  • 每一个IIFE都有属于自己的独立的作用域,彼此互不影响
//第一个IIFE+function(a){a += 99;console.log(a);}(100);//第二个IIFE+function(a){a += 3;console.log(a);}(44);

Python学习 Day28 JS函数(二)相关推荐

  1. 参数匹配模型——Python学习之参数(二)

    参数匹配模型--Python学习之参数(二) 文章目录 参数匹配模型--Python学习之参数(二) 位置参数:从左至右进行匹配 关键字参数:通过参数名进行匹配 默认参数:为没有传入值的参数定义参数值 ...

  2. Python学习之zip函数

    Python 学习之 zip 函数 问题的引出 有时候,你可能想同时迭代两个序列.假设有下面两个列表: names = ['anne', 'beth', 'george', 'damon'] ages ...

  3. Python学习笔记:函数(Function)

    Python学习笔记:函数(Function) 一.函数基本概念 函数是Python里组织与重用代码最重要的方法.一般来说,如果你期望多次重复相同或相似的代码,写一个可重用的函数可能是值得的.函数通过 ...

  4. Python学习笔记12_函数

    Python学习笔记12_函数 文章目录 Python学习笔记12_函数 1.函数定义 2.函数调用 3.函数的参数 3.1.可更改对象和不可更改对象参数 3.2.必需参数(位置参数) 3.3.关键字 ...

  5. python学习之代码练习二(鸽子和兔子)

    python学习之代码练习二(鸽子和兔子) 题目 题目链接:鸽子和兔子 实现代码 #!usr/bin/python # coding=utf-8result = [] num = 0 while nu ...

  6. [Python学习] 专题一.函数的基础知识

            最近才开始学习Python语言,但就发现了它很多优势(如语言简洁.网络爬虫方面深有体会).我主要是通过<Python基础教程>和"51CTO学院 智普教育的pyt ...

  7. Python学习:魔法函数

    一.什么是魔法函数(网络用语) 以双下划线开始,双下滑线结尾.魔法函数是为了增强一个类的特性. 魔法函数可以随意定义某个类的特性,这些方法在进行特定的操作时会自动被调用. 1 需求:封装一个员工列表, ...

  8. Python学习:定义函数的默认参数和可变参数

    一.默认参数 定义函数的时候,还可以有默认参数. 例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数: >>> int('123') ...

  9. python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...

    教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql Easy_install安装MySQLdb 很简单,以至于我不晓得该怎么说.一句话. sodu ...

最新文章

  1. 转载:配置nginx支持pathinfo功能
  2. delphi的几个特别关键字 object absolute
  3. Android IPC系列(一):AIDL使用详解
  4. 深度学习——从文件中载入训练数据
  5. 材料模拟计算机,材料计算机模拟技术
  6. OpenCV笔记(十八)——使用霍夫变换检测圆圈
  7. python学习笔记(python发展介绍)
  8. NDT 算法和一些常见配准算法
  9. 【SAR图像分辨率】匹配跟踪算法和自聚焦算法提高SAR图像分辨率
  10. 蓝桥杯嵌入式总结(KEY配置_按键扫描(三行代码)_矩阵按键_GPIO口输入和输出类型)
  11. 最新狂雨小说CmsV1.5.2漂亮的小说网站源码
  12. 苹果公司发展史_苹果公司的发展历史
  13. 未将对象引用设置到对象的实例 解决办法
  14. Android数据传输加密(一):Base64转码算法
  15. STM32处理器定时器分析(实现一个定时中断)
  16. linux -inode 详解超级块详细讲解个人参悟
  17. Oracle根据数据块ITL查找UNDO前镜像
  18. 西北工业大学第十一学位评定分委员会博士研究生学位论文免盲评审要求
  19. 合肥工业大学机器人技术作业一
  20. 微信营销十三招(干货)

热门文章

  1. Sentinel中有时候会搞乱的blockHandler与fallback
  2. 深度学习入门笔记(四):向量化
  3. Linux用户和用户组的管理
  4. .Net 垃圾回收机制原理(一)
  5. 论文阅读|训练过程中动态改变训练方案的Dynamic R-CNN
  6. Java Web项目性能测试 - JMeter测试网站吞吐量、反应时间百分比、流量
  7. 使用 Azure Databricks 做ETL
  8. 愚人节十大经典骗局,学学前辈的招数吧
  9. 互联网大厂的黑话困局
  10. Python 文件命名引发的module has no attribute错误