1.1 知识点

  1. 函数:就是可以重复执行的代码块
  2. 2.  组成:参数,功能,返回值
  3. 为什么要用函数,因为一部分代码使用次数会很多,所以封装起来, 需要的时候调用
  4. 函数不调用,自己不会执行
  5. 同名函数会覆盖,后面的覆盖前面的
  6. 函数名等于整个函数,打印函数名,就等于打印整个函数的代码
  7. 7.  加载函数的时候只加载函数名,不加载函数体
  8. 参数相当于局部变量
  9. 两个平级的函数中变量不会相互影响
  10. 10.     预解析:函数在解释文档的时候会被整体提到文档的最前面,和加载不一样
    1. 第一种:解析的时候会被提前,可在任何地方使用和定义

1.2 函数的定义

  1. 第一种:解析的时候会被提前,可在任何地方使用和定义

1. function fun ( a , b ) { 函数体;return ;  }

  1. 第二种:函数不会被提前,使用必须在定义之后

2. var fn2 = function ( ){函数体;}

3. //函数名可有可无,无名叫匿名函数

  1. 第三种:函数不会被提前,使用必须在定义之后,如果函数体不加引号,不调用也会执行

1. var fn3 = new Function(“函数体;”);

1.3 函数的参数

  • 设置参数可解决修改值不修改规则这个问题。
  • 增强函数的功能性,和程序员的交互性,和函数的可拓展性
  • JS没有方法重载
  • 规则中有几个变化的数(操作数),就定义几个参数
  • 函数可嵌套
  • 开闭原则
  • Math.sqrt( ); 开平方

形参

  1. 形式上参与运算的值,作用是为实参占位置
  2. 实际上参与运算的值
  3. 实参要进行运算,必须要有形参占位置
  4. 相等,正常执行
  5. 实参个数大于形参,正常执行,多去的舍弃不用
  6. 形参大于实参,看程序是否出错

实参

形参的个数和实参的个数不一样

a)  计算会得到NaN

b)  实参值是undefined  为给定实参的形参是undefined

c)  任何值和undefined计算都的NaN

1.4返回值

  1. 执行函数完毕之后,返回的数据
  2. 函数程序运行后的结果外边需要使用的时候,我们不能直接给予,需要通过return返回
  3. 作用:函数执行完成以后,结果就是返回值
  4. 有return的函数就有返回值,反之则没有
  5. 把函数内部的值赋值给外部
  6. 6.  如果没有return或者只有return没有值函数默认返回undefined
  7. 函数执行完return后会立即结束,return后面的代码不会执行
  8. 函数的返回值必须要执行才可以得到
  9. 外部要用那个值,我们就返回哪个值
  10. return可以截断循环
  11. Math.round()四舍五入
  12. Math.pow( a , n); a的n次幂
  13. Math.floor();地板函数
  14. var s  =  Math.floor( Math.randow() * (max-min+1) + min ); //生成min-max之间的随机数
  15. 函数内用的必须是形参的数组
  16. bubble  冒泡
  17. 冒泡排序极限后会出现问题
     var arr = [4,435,234,1223,645,341,123,124,562];
function bubble(arr) {
for(var i=0;i<arr.length-1;i++){
var flag = true;
for(var j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = false;
}
}
if(flag){
break;
// 此处若直接使用return(arr) ,则不能返回正确的值,个人理解为,此处为局部变量,不能正确返回
}
}
return(arr);
}
// console.log(bubble(arr))

18.函数通过运算来的数一般都是半成品,需要二次加工

1.5 函数名、函数体和函数加载问题

  1. 打印函数名,等于打印了整个函数的代码
  2. 打印执行函数,等于打印函数的返回值

a)  函数包函数先执行内部函数

  3. JS加载的时候,只加载函数名,不加载函数体

1.6 变量作用域

局部变量

  1. 只有局部能够访问的变量
  2. 函数内部用var定义的变量
  3. 函数执行完毕后,局部变量被回收

全局变量(成员变量)

  1. 在哪里都可以访问的变量
  2. 在函数内部,直接定义变量,不加var为全局变量,函数必须得执行后才可以使用

1.7 隐式全局变量(不要不这样写)

  1. 一般存在函数之中

a)  var a = b = c = 1; //这种情况,b和c都是隐式全局变量

b)  var a = 1; b = 2; c = 1; //这种情况,b和c都是隐式全集变量,分号相当于换行

c)  var a = 1, b = 2,  c = 1; //这种情况,b和c不是隐式全局变量

1.8 预解析:JS解析器

  1. 查看语法错误
  2. 变量声明提升(只提升变量名,不提升变量值),
  3. 把内容加载到内存中

a)  对象加载到堆中

b)  简单类型加载到栈中

  1. 用function定义的函数整体提升

a)  函数内照样适用

b)  就近原则,

  5.  预解析(整体提升函数)和函数加载(只加载函数名)的区别

  6.  预解析:检查script标签内的语法,提升函数声明

  7.  函数加载:把函数加载到内存中

  8.  解析完再加载

      // 测试是否是质数
1 function isPrime(n){
for(i=2;i<n/2;i++){
if (n%i == 0 ){
return false;
}
}
return true;
}
confirm (isPrime(7));
斐波那契数列
         function fibonacci(n){
if (n<3){
n=1;
return n;
}else {
var k = 1, j = 1;
for (i = 3; i <= n; i++) {
j = j + k;
k = j - k;
}
return j;
}
}

获取输入年月日,确定是今年的第几天

    console.log(getDay(2016,3,1));
function getDay(year,month,day){
var arr = [31,28,31,30,31,30,31,31,30,31,30,31];
var sum = day;
if(year%4==0 && year%100!==0 || year%400==0){
arr[1]=29;
}
for(var i=0;i<month-1;i++){
sum += arr[i];
}
return sum ;
}

javascript . 03 函数定义、函数参数(形参、实参)、函数的返回值、冒泡函数、函数的加载、局部变量与全局变量、隐式全局变量、JS预解析、是否是质数、斐波那契数列的更多相关文章

  1. JS:递归基础及范例——斐波那契数列 、 杨辉三角

    定义:程序调用自身的编程技巧称为递归.一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就 ...

  2. js算法集合(二) javascript实现斐波那契数列 (兔子数列)

    js算法集合(二)  斐波那契数列 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列进行研究,来加深对循环的理解.     Javascript实 ...

  3. Stream流实现斐波那契数列

    1.前言 我们都知道斐波那契数列有很多种实现方法,在jdk1.8以前没有流操作,只能通过递归或者迭代等其他方式来实现斐波那契数列, 但是jdk1.8以后,有了流操作,我们就可以使用流来实现斐波那契数列 ...

  4. Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列)

    Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列) 一丶带参数的装饰器 def wrapper_out(pt): def wrapper(func): ...

  5. JS高级. 06 缓存、分析解决递归斐波那契数列、jQuery缓存、沙箱、函数的四种调用方式、call和apply修改函数调用方法

    缓存 cache 作用就是将一些常用的数据存储起来 提升性能 cdn //-----------------分析解决递归斐波那契数列<script> //定义一个缓存数组,存储已经计算出来 ...

  6. HDU4549 M斐波那契数列 矩阵快速幂+欧拉函数+欧拉定理

    M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  7. Javascript数组求和的方法总结 以及由斐波那契数列得到的启发

    一次面试中,面试官要求用三种不同的Javascript方法进行一个数字数组的求和,当时思来想去只想到了使用循环这一种笨方法,因此面试比较失败,在这里总结了六种Javascript进行数组求和的方法,以 ...

  8. JavaScript生成斐波那契数列

    常规写法 https://cn.bing.com/search?q=js+fibonacci+sequence&pc=MOZI&form=MOZSBR //Fibonacci func ...

  9. 太原面经分享:如何用js实现返回斐波那契数列的第n个值的函数

    面试攒经验,let's go! 值此高考来临之际,闲不住的我又双叒叕出发去面试攒经验了,去了公司交待一番流程后,面试官甩给了我一张A4纸,上面写着一道js算法笔试题(一开始我并不知道这是在考察js算法 ...

随机推荐

  1. oracle__wm_concat函数

    首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用 准备测试数据 SQL> ...

  2. 谨慎能捕千秋蝉(一)——XSS

    最近在研读<白帽子讲web安全>和<Web前端黑客技术揭秘>,为了加深印象,闲暇之时做了一些总结. 下面是书中出现的一些专有词汇: POC(Proof Of Concept): ...

  3. Linux编程之ICMP洪水攻击

    我的上一篇文章<Linux编程之PING的实现>里使用ICMP协议实现了PING的程序,ICMP除了实现这么一个PING程序,还有哪些不为人知或者好玩的用途?这里我将介绍ICMP另一个很有 ...

  4. oracle 11G RAC会话故障转移测试

    目前接手的几个项目中,默认使用的oracle RAC数据库服务,均不能实现自动的会话转移,尤其是对于应用的长连接,一旦发生数据库故障,需要重启应用.实际11G具备会话迁移机制,为此做了如下配置测试,供 ...

  5. java udp socket通信(仅发送)

    实现功能:客户端发送一个字符串(可以为汉字),服务器端接收并显示 服务器端程序: package udpServer; import java.io.*; import java.net.*; /** ...

  6. 丘吉尔,最后一次演讲-Never Give Up

    丘吉尔一生最精彩的演讲,也是他最后一次演讲.在剑桥大学的一次毕业典礼上,整个会堂有上万个学生,他们正在等待丘吉尔的出现.正在这时,丘吉尔在他的随从陪同下走进了会场并慢慢走向讲台,他脱下他的大衣交给随从 ...

  7. Pangolin的使用

    Pangolin 是一个可用于SLAM可视化的openGL库.目前有很多SLAM系统都用它作为可视化的工具.它的编译与安装过程问题不大,依赖也比较少.但最近我在单独使用它的时候,碰到了很奇怪的现象:我 ...

  8. 微信群之Java技术红包问答

    缘起 年前公司拿到B+轮融资,相应的在战略上也做了很大的调整,毕竟B轮要做的事情不仅仅是增加用户数,于是乎公司在2017年的开头补充了一部分技术团队,这次人员选择上主要针对一些工作经验在1-2年的技术 ...

  9. 使用docker-compose 大杀器来部署服务 上

    使用docker-compose 大杀器来部署服务 上 我们都听过或者用过 docker,然而使用方式却是仅仅用手动的方式,这样去操作 docker 还是很原始. 好吧,可能在小白的眼中噼里啪啦的对着 ...

  10. 深入理解 JavaScript 异步系列(2)—— jquery的解决方案

    第一部分,jQuery-1.5 之后的 ajax 本地址http://www.cnblogs.com/wangfupeng1988/p/6515779.html未经允许不得转载~ $.ajax这个函数 ...