函数

函数是什么

  • 函数是一种特殊的数据类型
  • 函数是执行特定任务的语句的集合。

创建函数的方法

  • 在创建函数的的时候,无论使用哪种方法,都需要使用function关键词。
    函数声明
function fnName(参数1,参数2,参数3,......参数N){
            //语句的集合
}

函数表达式
整个函数声明的过程由以下几部分构成:

  • 1.funcion: 是一个声明函数的关键词
  • 2.fnName: 函数名称。声明函数会创建一个变量,函数名称就是变量的名称,这个理解函数的关键。函数名称用来存放代码块(相当于变量的值)
  • 3.小括号:用于存储函数的参数。所有的参数都是为了计算函数的返回值而生。参数分为两类:
    • 形参:形参就是形式上的参数。形参是函数体内创建的变量。形参用于接收入到函数体内的实参。形参的数量可以是任意个,多个形参之间用逗号分隔。形参出现在函数申明中,实参出现在调用函数中。
  • 大括号:用于定义函数体。函数体内包裹的是多条要执行的语句。函数体相当于变量的值。
  • 4.函数体 :使用大括号包裹的代码块。函数体相当于函数名的值。
  • 5.return语句:如果你希望函数运行之后计算一个值,需要在函数内使用return语句显示设置返回值。return语句不是必须设置的,如果你没有在函数体内设置return语句,那么函数默认的返回值是undefiend。注意:一个函数只能有一个返回值,如果你需要返回多个值,可以考虑将多个值放入一个数组里,以数组元素的形式返回。

函数表达式

  • 特点1:函数只定义一次,可被调用任意次。
  • 特点2:定义的函数永远不会执行,除非你调用它。
    函数调用:
    直接调用
    事件调用
    方法调用
    作为参数调用
    自调用

作用域分类

全局作用域:局部作用域之外的区域就是全局作用域。
局部作用域:Unfortunately,局部作用域用两种定义方式:

  • 函数作用域:使用var关键词定义的变量就会创建函数作用域。
  • 块级作用域:使用let和const关键词定义的变量就会创建块级作用域。

示例: 声明一个求平方的函数

function square(a){
  return a * a
}

示例: 声明一个判断一个字符串是否是包含数字的函数

function square(a){
  return a * a
}

函数表达式

调用函数

  • 当创建了一个函数之后,如果你需要使用这个函数,你必须要去调用它,函数如果不调用,函数永远不会自己执行。调用函数的方法很简单,值需要在函数名之后加一对小括号就可以了。在调用函数时,小括号用于传递实参。

语法

funtionName( 实参1,实参2,实参3,...,实参N )
  • 实参: 是调用函数时,通过形参传入到函数内的实际的参数。所有的实参都是为了计算函数返回值而出现的。

示例: 调用square()函数

square(10) // 100

变量作用域

定义:

  • 变量作用域指变量发生作用的 (可以访问到) 区域。
  • 发生作用的区域是指定义变量的区域。变量在哪个区域定义,变量
    就在哪个区域起作用。在这个区域之内,可以访问到变量,在这个区域之外,访问不到变量。

有两种类型的作用域:
- 全局作用域:局部作用域之外的区域就是全局作用域。

  • 局部作用域:局部作用域指函数作用域块级作用域。这两种局部作用域使用不同的关键词定义:
  • 函数作用域:指在函数体内,使用关键词var定义的变量,会创建变量的函数作用域,也就是说变量只能在当前函数体内才可以访问。注:变量定义在if或for创建的代码块内,是不会创建函数作用域的。
  • 块级作用域: 指在大括号包裹的区域内,使用关键词let或const定义的变量,会创建块级作用域,只能在大括号内才可以访问。

变量提升

使用var或n声明的变量会被提升到作用域顶部。

示例1: 函数作用域

function fn(){
  var a = 100
  console.log(a) // 100 (在函数体内可访问到变量的值)
}
console.log(a) // Uncaught ReferenceError: a is not defined(在函数体外访问不到变量的值)

示例2: let定义的变量存在块级作用域

{
  let a = 100
  console.log(a) // 100
}
console.log(a) // Uncaught ReferenceError: a is not defined

示例3: let定义的变量存在块级作用域(if语句)

if(true){
  let a = 100
  console.log(a) // 100
}
console.log(a) // Uncaught ReferenceError: a is not defined

示例4: let定义的变量存在块级作用域(for语句)

for (let i = 0; i < 3; i++) {
  console.log(i) // 0, 1, 2
}
console.log(i) // Uncaught ReferenceError: i is not defined

示例5: var定义的变量不存在块级作用域

{
  var a = 100
  console.log(a) // 100
}
console.log(a) // 100

示例6: var定义的变量不存在块级作用域

if(true){
  var a = 100
  console.log(a) // 100
}
console.log(a) // 100

示例7: var定义的变量不存在块级作用域

for (var i = 0; i < 3; i++) {
  console.log(i) // 0, 1, 2
}
console.log(i) // 3

示例

console.log(a) //
var a = 1

示例

{
  let a = 1
}
console.log(a) // 

mouseover:当鼠标移入元素或其子元素都会触发事件,所以有一个重复触发,冒泡过程。对应的移除事件是mouseout

mouseenter:当鼠标移除元素本身(不包含元素的子元素)会触发事件,也就是不会冒泡,对应的移除事件是mouseleave

单词

get: 得到。got: 过去式表示已经得到。

  • I got it: 我得到它了。(我听懂了)
    compute: 动词。表示计算
    computde: 动词。表示计算过的
    comouter: 名词。表示风格、样式

getComputdestyle:

定义
window.getComputdestyle返回一个对象。该对象 包含元素的计算后的样式。

什么是计算后的样式?

封装一个move()功能函数

主要要点:
1.window.setInterval(fn.间隔时间)

  • 定义 语法(参数含义)

clearInterval

clearInterval()函数是在JavaScript中用于取消setInterval()函数设定的定时执行操作

操作符

自增操作符:前置自增 || 后置自增
a++ => a = a+1
++a => a = a+1

  • 第一个是先赋值再自加
  • 第二个是先自加在赋值
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第5章 函数和函数式编程 5.1 引言函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数...
    VIVAFT阅读 1,090评论 0 5
  • @[toc]  本章介绍如何将语句组合成函数,这让你能够告诉计算机如何完成任务,且只需说一次,无需反复向计算机传达...
    奋斗在阿尔卑斯的皮卡丘阅读 1,699评论 0 1
  • 函数是什么 创建函数的方法 调用函数的方法 变量作用域 变量声明提升 函数也是数据 使用函数思想写程序的思路 函数...
    败于化纤阅读 173评论 0 0
  • js函数的概念和作用,js函数的定义,js函数的调用,js事件驱动的概念,js函数的实参和形参,js的作用域,js...
    小五丶_阅读 424评论 0 0
  • 导读 函数是什么 创建函数的方法 调用函数的方法 变量作用域 变量声明提升 函数也是数据 使用函数思想写程序的思路...
    Pj浩阅读 523评论 0 1

友情链接更多精彩内容