1. 1.函数的基本使用
       a)作用:代码的复用,灵活性比较强
  2. b)声明方式:function (形参){函数体}
  3. c)调用: 名(实参);
  4. d)封装函数--书写一个函数的结构,而且放入一些功能,在需要使用的时候直接调用函数名字
  5. e)参数:--形参+实参
  6. 1)形参:书写在函数体的小括号,是函数内的变量,不需要声明,默认值是undefined
  7. 2)实参:书写在函数调用的小括号,用于给形参传值
  8. 3)多个参数使用逗号分隔
  9. f)当一个函数的整体功能是一定的,但是内部的值不确定的时候,可以使用参数
  10. g)返回值的设置
  11. 1)在函数体外使用函数的计算结果 设置返回值
  12. 2)语法: return 值;
  13. 3)接受方式:通过函数的调用,调用本身就是返回值
  14. 4)return的其他作用: 结束函数的执行--跳出函数
  15. 5)函数没有设置返回值,默认是undefined

​ 2.作用域

  1. a)全局变量:声明在全局作用域的变量,在任意位置都可以进行访问
  2. b)局部变量:声明在某个局部的作用域中,只能在声明这个变量的局部作用域中访问

​ 3.预解析

  1. 注意:与解析在每个作用域代码执行前都会发生
  2. 1)查找当前作用域中的var变量声明,将声明提升到当前作用域顶端,赋值保留在原地;
  3. 2)查找当前作用域中的function函数声明语句,将函数整体提升到当前作用域顶端,调用保留
  4. 注意:
  5. 1)全局作用域的预解析在页面加载的时候执行
  6. 2)局部作用域的预解析在调用时进行执行
  7. 不规则的声明方式:
  8. 1)单个变量--不加var
  9. 2)多个变量--连续赋值 var n1=n2=n3=1;

​ 4.变量的访问规则--作用链域的访问规则

  1. 1)在当前作用域查找,找到--使用
  2. 2)没有找到--查找上级作用域,找到--使用
  3. 3)依次往复
  4. 4)到全局作用域后,使用方式不同,结果不同
  5. a)取值--直接报错
  6. b)赋值--声明一个全局变量

​ 5.参数的值传递--实参给形参传值的方式--采用值传递(复制)方式

  1. a)实参为复杂数据类型时,函数的功能那个是内部直接处理实参数据,不需要设置返回值
  2. b)接收的返回值数组和原数组实际上还是同一个数据的时候,没有必要接收
  3. 注意: 封装函数用于计算任意数组中的和---设置返回值
  4. 封装函数对数组进行排序,不需要设置返回值

​ 6.函数的多种声明方式

  1. 1)函数声明语句 function 名( ){ }
  2. 2)函数表达式 var fun= function (){}
  3. 函数表达式是在预解析阶段参与的是变量提升的规则,所以无法再声明之前进行调用操作

​ 7.匿名函数的使用--没有函数名的函数 --无法单独使用 function( ){ }

  1. 用法:
  2. a)将匿名函数保存在变量中做为函数表达式使用 var fun = function( ){ }
  3. b)做为自调用函数的形式使用 (function(){ 函数体--只能在书写的位置执行一次})(调用)
  4. 作用:
  5. 1)用于包裹作用域降低变量名的难度
  6. 2)提高变量访问时的访问效率
  7. 3)JS高级--给每个功能套用一个自调用函数
  8. c)将匿名函数做为回调函数使用
  9. d)将匿名函数做为函数的返回值使用--函数做为另一个函数的返回值使用(命名函数+匿名方式)

​ 8.将一个函数做为另一个函数的参数使用

  1. a)当一个函数的整体功能一定,但是内部的某些值不确定时,可以传入参数
  2. b)一个固定功能的函数中,不仅仅是某个值不确定,而是某段代码功能不确定将函数做为参数传递

​ 9.回调函数

  1. a)将一个函数作为另一个函数的参数使用时,称之为回调函数
  2. b)使用场景:当一个函数整体功能一定时,内部的某段功能呢不确定时,可以使用回调函数
  3. 1)将命名函数做为函数传递
  4. 2)要传递的实参值是一个函数,使用匿名方式传参

​ 10.函数的数据类型-typeof==function

​ 11.arguments的使用

  1. a)只能在函数内部使用
  2. b)是一个数组形式的数据,伪数组结构(类数组结构)
  3. c)内部保存了本次调用传入的所有实参
  4. 练习:对传入的所有实参进行求和
  1. function fun (a,b){
  2. var sum = 0 ;
  3. for (var i = 0 ; i <arguments.length;i++){
  4. sum += arguments[i];
  5. }
  6. console.log(sum);
  7. }
  8. fun(1,2,3,4,5,6,7,8,8,9);

  

  1.  

​ 12.函数重载的模拟--使用传入的参数个数不同

  1. function fun(){
  2. //通过判断argument.length属性的值去进行函数重载的模拟
  3. var len=arguments.length;
  4. if(len===2){
  5. .....
  6. }
  7. }
  8. fun (1,2,3);

  

  1.  

​ 13.构造函数

  1. 1)使用--通过new调用的函数,就是构造函数(作用-创建对象)
  2. 2)书写一个构造函数
  3. a)命名要求---首字母大写
  4. b)调用前一定要加new
  5. c)只要通过this给创建的对象设置属性和方法
  6. 3)在构造函数内部使用return的效果说明
  7. a)返回值为基本数据类型:会被忽略
  8. b)返回值为复杂数据类型:这个复杂数据类型值会替换掉原有的对象
  9.  
  10. PS: 2018年,努力!!!
  1.  

JaveScript函数(JS知识点归纳六)的更多相关文章

  1. JaveScript运算符(JS知识点归纳三)

    JaveScript中有许多的运算符,在这里就只说明一些需要注意的. 01 一元运算符 一元:指的是参与运算的操作数只有一个 最经常使用的是++   -- 计算规则: ++/-- 前置于操作数的时候 ...

  2. JaveScript对象(JS知识点归纳七)

    1.JS中的对象表示的是一个具体的事物. a)静态的特征=>对象的属性 b)动态的行为=>对象的方法=>保存的值==>函数 2.对象的创建方式 a)构造函数的创建方式 ``` ...

  3. JaveScript数组(JS知识点归纳五)

    1.概念 a)作用--用于保存多个数据,便于对数据的使用 b)数组元素--数组中的数据 c)索引--数组中的元素按照下标(数值)的方式排列(从0 开始),依次递增(也有可能是字符串的类型--不用) d ...

  4. JaveScript简单数据类型(JS知识点归纳二)

    JS中的简单数据类型有五种 : --> string --> number -->boolean --> null -->undefined 数据类型的检测 :typeo ...

  5. JaveScript变量的简介及其变量的简单使用(JS知识点归纳一)

    变量简介 "变量是一个容器" 为什么要有变量? 程序的执行过程中,会使用到许多的数据(用户输入的内容,动态效果的运动数据等),当这些数据需要重复在多个地方使用的时候,就需要一个容器 ...

  6. JaveScript内置对象(JS知识点归纳八)

    1)JS自身提供的方式 用于对数据进行简便的操作,根据方法可以操作的数据类型不同,形成了不同的对象--内置对象 2)数组 ​ a)基本操作方法--对数组进行修改 从数组最后进行操作 1)数组.push ...

  7. JaveScript流程控制(JS知识点归纳四)

    01 流程控制 顺序结构: 程序的默认执行方式 条件判断语句:也称之为分支结构,选择结构:如果程序要执行的代码出现了多种情况需要使用 循环结构:当代码需要多次重复执行多次时,使用 02 条件判断语句 ...

  8. Node.js知识点学习

    Node.js知识点学习 一.基本概念 Node.js,或者 Node,是一个可以让 JavaScript 运行在服务器端的平台.可以说,Node.js开创了javascript模块化开发的先河,早期 ...

  9. 【重走Android之路】【路线篇(二)】知识点归纳

    [重走Android之路][路线篇(二)]知识点归纳   参考:http://blog.csdn.net/xujing81/article/details/7313507   第一阶段:Java面向对 ...

随机推荐

  1. SendCloud邮件中为什么会显示代发

    显示代发是发信的sender和发信人地址(from)不一致导致的. sender是SendCloud系统根据用户自设的发信域名生成的,目前是"随机地址@自有域名"做sender,所 ...

  2. 【开发技术】 B/S、C/S的区别

    c/s     客户端----服务器端             可以用譬如vb或vc等语言开发,比如最常用的oicq就是.   需要在客户端安装软件. b/s     浏览器端----服务器端     ...

  3. Java接口和抽象类的理解

    接口和抽象类的相同之处就是 都会有抽象方法 抽象方法就是一个没有方法体 等待继承的子类完成的方法 然而接口比较严格 它的方法必须是抽象方法且是公开的 抽象类 可以有自己的属性 和 实体方法 首相用面向 ...

  4. Django 发送邮件

    问题: 对于一些错误信息或用户注册账号的时候,需要给用户发送邮件进行验证. 以用户注册发邮件为例子,用户向后端提起注册,后端收到用户邮箱,对邮箱格式进行验证,然后发送邮件,邮件内容中包括邮件标题.邮件 ...

  5. python_大学排名爬取

    逻辑思路是什么? 1. 获取页面 2. 处理页面,提取信息 3. 格式输出 先走面向过程编程: 1. 要定义3个函数,对应以上三个过程 2. 在__main__函数中传入参数,并执行以上三个过程 #! ...

  6. Maven的Archetype简介

    Archetype,骨架的意思. 文章出处:http://m.blog.csdn.net/blog/FireOfStar/42526027 Archetype是什么? 简单的说,Archetype是M ...

  7. BSA Network Shell系列-nexec命令

    # nexec ## 1 说明:nexec是远程命令接口引擎 ,用于在远程主机执行命令 nexec [-?] [-t term] [-o] [-i] [-l] [-nohup hostname &qu ...

  8. java.lang.Thread

    package java.lang; import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue; import java. ...

  9. yum 安装zabbix2.4 /3.2.4

    yum 安装zabbix2.4 首先zabbix需要的环境是web环境,默认的是lamp或者lnmp,讲道理,要是使用tomcat也是可以的,不过实验没有成功 系统:centos6.8_x64 附yu ...

  10. 理解javascript模块化(转)

    模块化是一个通用的编程最佳实践.程序的模块化使我们可以更方便地使用别人的代码,想要什么功能,就加载什么模块,从而提高代码的利用效率,增加开发速度. 模块就像积木,有了它,我们可以搭出各种各种功能样式的 ...