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. 【前端】:css

    前言: 关于前端的第二篇博客,会写关于css的,内容比较基础.写完这篇博客,会做一个类似美乐乐家具的界面.good luck to me~ 一.css-引用样式 标签上设置style属性: <b ...

  2. 使用node-inspector调试nodejs程序<nodejs>

    1.npm install -g node-inspector  // -g 导入安装路径到环境变量 一般是c盘下AppData目录下 2.node-inspector & //启动node- ...

  3. 谷歌YSlow准则

    谷歌YSlow准则 YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化. 测试个人站点 通过测试个人站点可以获得下面的数据 23条准则 Make fewer HT ...

  4. 在 Windows 上安装 Hadoop 教程(转)

    在 Windows 上安装 Hadoop 教程 一见 2010.1.6 www.hadoopor.com/hadoopor@foxmail.com 1. 安装 JDK 不建议只安装 JRE,而是建议直 ...

  5. spring boot项目发布tomcat容器(包含发布到tomcat6的方法)

    spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢? 1. 既然需要打包成wa ...

  6. 2013~2014年度 NOIP~GDOI总结

    滚回去撸一年中考撸完之后就迎来了NOIP2013(话说初赛差点被坑了有木有= =)想想当年10月还是那样的天真的去了广州,结果就被虐成翔的回来了= =只做了三道签到题的渣渣就是弱= =DAY1T2死活 ...

  7. 浏览器兼容汇总(css+js)

      JavaScript 1. HTML对象获取问题 FireFox:document.getElementById("idName");ie:document.idname或者d ...

  8. WP8.1开发中对于XAML中一些语言的学习(1);

    以前在学习WP开发的时候,看到视频中说到程序在创建之初,MainPaige.xaml页面上有一些代码: <Page x:Class="草案.MainPage" xmlns=& ...

  9. 读书笔记 effective c++ Item 21 当你必须返回一个对象的时候,不要尝试返回引用

    1. 问题的提出:要求函数返回对象时,可以返回引用么? 一旦程序员理解了按值传递有可能存在效率问题之后(Item 20),许多人都成了十字军战士,决心清除所有隐藏的按值传递所引起的开销.对纯净的按引用 ...

  10. intellij idea 常用快捷键mac版

    login.jsp文件中的html标签都是大写格式的,看着很不舒服,就改了一下,全部用的快捷键修改成小写的,也因此整理了一下常用的快捷键. shift + Command + u 大小写转换. alt ...