函数第一节:

1.函数的概念及作用

     函数是由事件驱动的或者当他被调用时可执行的可重复使用的代码块。
   具备一点功能的代码段,代码段来实现具体的功能。要想实现一个函数的功能需要对函数进行调用。每写完一个函数就需要在使用时进行调用
 

2.函数的好处

   重复使用     忽略细节     选择执行
 

3.函数的定义

   通过关键字function声明,
     function fn(){}
     其中:
        function---为声明函数的关键字,指出这是一个函数
        fn ------是函数的名称,类似于永来存储函数的变量
        () ------为函数的参数,多个参数用 , 隔开
        {} ------放置函数体,用于执行时,所要编译的代码段
 

4.函数的调用

   fn(); ----函数名+()
   
   注意:千万不能丢掉括号;可先尝试理解fn()()()()
 

5.事件的概念种类和作用

   是一种可以被js侦测到的行为
   在JS中常见的事件有:
       鼠标点击--------onclick
       鼠标双击--------ondblclick
       页面或图片加载-----onload
       鼠标移入--------onmouseover
       鼠标离开--------onmouseout
       元素获得焦点------onfocus
       元素失去焦点------onblur
       键盘事件
       ……
 
   主要用于和用户产生一定的交互,提高页面或程序的交互性。
 
   事件和函数之间的关系
       当触发事件的时候,执行函数
 
   事件----调用----函数
   
 

6.参数的声明和传递

   函数的参数分为:形参和实参;
   function fn(a){          //a为形参
console.log(a); //打印出123
}
fn(123); //123为实参
 
   写在函数体内的参数称为形参,相当于该函数的某个变量,只不过不用var声明;需要遵循变量的命名方式。
   调用时传递的参数为实参,相当于给变量赋值,可以传递所有数据
   
 
 

函数第二节:

1.函数的两种创建方式:声明式和赋值式

   通过关键字function声明:
     function fn(){}
   
   通过变量赋值(未命名函数):
     var fn = function(){};
   这种方式下,虽然这个函数没有名字,但是这个函数赋值给了fn,因此通过变量fn也能调用到这个函数
   
   以上两种声明方式等价
 
   都可以使用  函数名/变量名+()  调用执行
 

2.形参和实参

   形参和实参都可以有多个,用逗号隔开,多个形参和实参之间必须相互一一对应
   function fn(a,b,c){            //a = 1, b = 2, c = 3
console.log(a+b+c); //
}
fn(1,2,3);
 
   如果形参和实参不一致:
       形参的数量比实参的数量多,多出来的形参,为undefined;
       形参的数量比实参的数量少,多出来的实参,传递到arguments对象中;
       形参的数量与实参的数量相等,一一对应。
 

3.return关键字

   alert(parseInt(123.456));            //弹出123

   function fn(a,b,c){
console.log(a+b+c);
}
alert(fn(1,2,3)); //弹出undefined
   
   因为fn()函数没有返回值,只要没有返回值的函数,都返回一个undefined
   
   可通过关键字return返回函数的值。
 
   return的作用:1.返回值;2.终止程序
   
   function fn(a,b,c){
console.log(a+b+c);
return a+b+c;
}
alert(fn(1,2,3)); //弹出6
 
   什么是返回值?
       将函数处理后的数据,返回到执行语句上,便于其他程序或用户调用或做二次使用
 
       如果有return,此时fn(1,2,3)==return的返回值
       如果没有return,此时fn(1,2,3)==undefined
 
   return中止程序之后,return下面的代码不会执行
 
   不一定所有函数都要有返回值,只有需要返回数据的函数才加return
 
   return可以返回任何值,包含函数,当返回函数时,如果需要执行返回的函数,可将返回值当成一个函数名,加上一个()即可执行;
   如fn(2)(3)(4);
 

4.arguments对象

   如果形参和实参不一致:
       形参的数量比实参的数量多,多出来的形参,为undefined;
       形参的数量比实参的数量少,多出来的实参,传递到arguments对象中;
       形参的数量与实参的数量相等,一一对应。
 
   在函数中,形参和实参的个数,可以为任意个,甚至数量不对应,程序都不会报错,但是在计算过程中可能会出现NaN,如:
   function fn(a,b,c){
return a+b+c;
}
alert(fn(1,2)); //弹出NaN
   这是因为在JS中,参数在函数内部是以一个数组表示的,函数接受的永远是一个数组。
   我们可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每个参数。
   
   在arguments身上有许多属性,如
       arguments.length为数组的长度----当前传进来几个参数
 
 

函数第三节:

1.作用域

    什么是作用域,变量在函数内部作用的范围/区域。有函数的地方就有作用域
 

2.局部作用域和全局作用域

    function fn(){
var a = 1;
}
console.log(a); //报错:a is not defined
    用var声明的变量,实际上是有作用域的
    在函数内部定义的变量,该变量的作用域是整个函数体,在函数体外不可引用该变量,这是局部作用域
 

变量的生命周期:

    1.永远存在----全局
        程序没关,一直占用内存,少用全局
    
    2.朝生暮死----局部
        函数的大括号开头到函数的大括号结尾
 
    var a = 1;
function fn(){
console.log(a); //
}
console.log(a); //
    不在任何函数内定义的变量就具有全局作用域。全局变量在任何地方都能调用。
 
  利用匿名函数生成一个局部作用,把变量的声明和使用这个变量的小函数都放在匿名函数中
 
    扩展:javascript默认有个全局对象window,全局作用域的变量实际上被绑定到window的一个属性
 
 3.声明提升
      变量声明提升:
     console.log(a)     //undefined已经声明但是未赋值
var a = 2;
console.log(a) // consoleo.log(b) //not a defined未声明 function fn(){
console.log(a) //undefined
var a = 1;
}
fn();
    在函数fn()中,在没有定义变量之前打印a,得到undefined,而并不是not defined
    说明此时变量已经被声明,只是还没有被赋值。
 
    上面的fn()函数可以理解成
    function fn(){
var a;
console.log(a);
a = 1;
}
fn(); 
 
    我们称这种现象为变量的声明提升,所有使用var声明的变量会在当前作用域最开始的部分被声明。   
 
    函数的声明提升:整体提升
    fn();        //
function fn(){
console.log(2);
}
fn(); //2
    console.log(fn);     //undefined
fn(); //not a function
var fn = function(){
console.log(1);
 
  JS的编译和执行
      先检查语法错误---语法错误,当前代码段不执行
      声明提升------变量提升和函数提升,作用域内所有使用var声明的变量和非匿名函数
      开始编译------逐行执行
 
    函数声明提升:

   fn();                    //
function fn(){
console.log(123);
}    
    但是:
 
    fn();                    //报错:fn is not a function
var fn = function(){
console.log(123);
}
    以上写法等于:
    var fn;                  //此时声明变量fn,未定型和存值
fn(); //所以此时的fn不是一个函数,不能使用执行函数的方式执行,强行执行会报错
fn = function(){ //此时才对fn赋值函数
console.log(123);
}
fn(); //这时就可以执行了

4.递归函数

    什么是递归?
    就是在函数体内调用本函数。是一种调用模式,是一种逻辑程序基础的体现。
 
    递归会消耗大量内存,在实际开发中很少使用 
    注意:递归最重要的是终止条件。
 
 
 

函数第四节:

1.利用事件触发函数执行?

    主要用于和用户产生一定的交互,提高页面或程序的交互性。
 
    事件和函数之间的关系
       当触发事件的时候,执行函数
 
    事件----调用----函数
 
 
 

2.常见事件触发函数?

    常见事件:
    是一种可以被js侦测到的行为
    在JS中常见的事件有:
       鼠标点击--------onclick
       鼠标双击--------ondblclick
       页面或图片加载-----onload
       鼠标移入--------onmouseover
    鼠标离开--------onmouseout
       元素获得焦点------onfocus
       元素失去焦点------onblur
  
 
 

3.构造函数及对象类型(了解)

    可以构造某件东西的函数
    var str = "123”;             //字面量方式生成
console.log(str); //123
console.log(typeof str); //string var str = new String("123”); //构造函数方式生成
console.log(str); //[1,2,3,…]
console.log(typeof str); //object 
    构造函数只会产生对象,构造函数是用来构造对象的函数
 
    构造函数用来构造对象,对象被用来编程,面向对象向编程
 
    一种新的调用函数的方式:new调用

Javascript基础三(函数)的更多相关文章

  1. Javascript 基础--JS函数(三)

    一.基本概念:未完成某一个功能的代码(语句,指令)的集合. 二.函数的调用方式: 2.1.函数名(传递参数1,传递参数2)   基本语法 function 函数名(参数列表){ //代码; retur ...

  2. JavaScript基础三

    1.10 关于DOM的事件操作 1.10.1 JavaScript的组成 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数. ...

  3. (Frontend Newbie)JavaScript基础之函数

    函数可以说是任何一门编程语言的核心概念.要能熟练掌握JavaScript,对于函数及其相关概念的学习是非常重要的一步.本篇从函数的基本知识.执行环境与作用域.闭包.this关键字等方面简单介绍Java ...

  4. JavaScript基础学习-函数及作用域

    函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容. (一)JavaS ...

  5. JavaScript 基础回顾——函数

    在JavaScript中,函数也是一种数据类型,属于 function 类型,所以使用Function关键字标识函数名.函数可以在大括号内编写代码并且被调用,作为其他函数的参数或者对象的属性值. 1. ...

  6. javascript基础(五)函数

    原文http://pij.robinqu.me/ 通过call和apply间接调用函数(改变this) call 和 apply带有多个参数,call和apply把当前函数的this指向第一个参数给定 ...

  7. JavaScript基础之函数与数组

     函数    函数的基本概念 为完成某一功能的程序指令(语句)的集合,称为函数.有的程序员把函数称为方法,希望大家不要被这两个名词搞晕了. 函数分为:自定义函数.系统函数(经常查看js帮助手册). j ...

  8. Javascript入门(三)函数

    Javascript函数 一.函数定义与执行 <script type="text/javascript"> //define function fun1(){ ale ...

  9. JavaScript基础-即时函数(Immediate Functions)(017)

    1.即时函数的声明方法 即时函数(Immediate Functions)是一种特殊的JavaScript语法,可以使函数在定义后立即执行:(function () {    alert('watch ...

随机推荐

  1. 基于TMS320C6455、XC5VSX95T 的6U CPCI无线通信处理平台

    基于TMS320C6455.XC5VSX95T 的6U CPCI无线通信处理平台   1. 板卡概述 本板卡由我公司自主研发,基于CPCI架构,符合PICMG2.0 D3.0标准,包含双TI TMS3 ...

  2. 解决图片插入word文档后清晰度降低的问题

    解决图片插入word文档后清晰度降低的问题 在默认情况下,word程序会自动压缩插入word文档中的图片以减小整个word文档的.当我们需要插入word文档中的图片保持原始清晰度时,可以通过设置wor ...

  3. 初学Java 从控制台读取输入

    代码 import java.util.Scanner; public class ComputeArea { public static void main(String[] args) { Sca ...

  4. linux ---apache的安装和配置

    linux环境下的安装:yum安装和tar包安装 yum安装: 首先安装php环境 yum install php55w yum install php55w-mysql yum install ph ...

  5. 【读书笔记】Cracking the Code Interview(第五版中文版)

    导语 所有的编程练习都在牛客网OJ提交,链接: https://www.nowcoder.com/ta/cracking-the-coding-interview 第八章 面试考题 8.1 数组与字符 ...

  6. JPA @Id 和 @GeneratedValue 注解详解

    JPA @Id 和 @GeneratedValue 注解详解   @Id: @Id 标注用于声明一个实体类的属性映射为数据库的主键列.该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上 ...

  7. Graphics 绘图

    Graphics类提供基本绘图方法,Graphics2D类提供更强大的绘图能力. Graphics类提供基本的几何图形绘制方法,主要有:画线段.画矩形.画圆.画带颜色的图形.画椭圆.画圆弧.画多边形等 ...

  8. 【leetcode】1022. Smallest Integer Divisible by K

    题目如下: Given a positive integer K, you need find the smallest positive integer N such that N is divis ...

  9. Navicat Premium 12 如何连接阿里云虚拟主机SQL Server 数据库

    这个是一台 阿里云购买云虚拟主机!密码已经重置完毕,现在我们 需要知道 数据连接的地址,数据库名,帐号以及密码. 根据不同的运营商 选择 这里我们选择阿里云 云数据库 SQL Server版本 填写 ...

  10. [转]Windows 10 无法访问共享的解决办法大全

    本文前面介绍 Windows 10 操作系统无法访问其他电脑的共享文件夹,而其他电脑访问该共享可以访问的解决办法. 简单点说就是,你的操作系统是 Win10 ,你访问不了某台电脑的共享,但是别人可以. ...