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. Java中正则表达式去除html标签

    Java中正则表达式去除html的标签,主要目的更精确的显示内容,比如前一段时间在做类似于博客中发布文章功能,当编辑器中输入内容后会将样式标签也传入后台并且保存数据库,但是在显示摘要的时候,比如显示正 ...

  2. 获取SQL中某一列的类型及精度

    SELECT @type=t.name, @prec=c.prec FROM sysobjects o        JOIN syscolumns c on o.id=c.id        JOI ...

  3. 【小梅哥FPGA进阶教程】第九章 基于串口猎人软件的串口示波器

    九.基于串口猎人软件的串口示波器 1.实验介绍 本实验,为芯航线开发板的综合实验,该实验利用芯航线开发板上的ADC.独立按键.UART等外设,搭建了一个具备丰富功能的数据采集卡,芯航线开发板负责进行数 ...

  4. php解析

    vim /usr/local/apache/conf/httpd.conf     ##修改apache的网页配置文件  →  解析php文件 /usr/local/apache/bin/apache ...

  5. Azure 基础:使用 powershell 创建虚拟网络

    什么是虚拟网络 虚拟网络是您的网络在 Azure 云上的表示形式.您可以完全控制虚拟网络的 IP 地址.DNS 的设置.安全策略和路由表.您还可以更进一步,把虚拟网络划分为多个子网.然后用它们连接您的 ...

  6. BZOJ 3083: 遥远的国度(树链剖分+DFS序)

    可以很显而易见的看出,修改就是树链剖分,而询问就是在dfs出的线段树里查询最小值,但由于这道题会修改根节点,所以在查询的时候需判断x是否为root的祖先,如果不是就直接做,是的话应该查询从1-st[y ...

  7. eclipse下进行spark开发(已实践)

    开发准备: jdk1.8.45 spark-2.0.0-bin-hadoop2.7(windows下和linux个留一份) Linux系统(centos或其它) spark安装环境 hadoop-2. ...

  8. django-查询语句(一)

    1.model 假设我们的model如下: 某个JobType下有很多Job. class JobType(models.Model): name = models.CharField(max_len ...

  9. KEEP!

    [list][*]别问我前端有没有前途,我不知道,我只知道我现在喜欢前端,以后也应该喜欢.[*]别问我前端的工作好不好找,不管哪一职位,工作好不好找都是看你的水平.[*]别问我前端累不累,这世界就没有 ...

  10. bash之管线命令

    命令的输出需要经过好几道手续才能得到我们想要的格式,需要用到管线(pipe),(|) 管线命令(|)仅能处理stdandard output,对stdandard error output会忽略 管线 ...