欢迎光临散文网 会员登陆 & 注册

千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip

2023-07-21 09:30 作者:何其如  | 我要投稿

函数--function

声明式函数

声明式函数在函数定义之前 可以 调用

console.log(fn1); // ƒ fn1(){console.log('定义了一个声明式函数fn1,这是fn1函数内部');}

fn1();

赋值式函数

赋值式函数在函数赋值给变量之前 无法调用,如果调用会报错

因为赋值式函数是将函数赋值给了一个变量,而变量在声明之前访问结果是undefined

所以在将函数赋值给变量之前,这个变量的值是undefined,不是函数,所以无法调用

函数

函数 是一段有名字的代码块,完成特定功能的代码块

函数可以减少代码冗余,方便维护开发

特点:一次定义,多次使用

函数的四要素

函数名 --- 函数的命名规则 同 变量的命名规则

函数体

函数的参数

// 形参 --- 形式参数

// 实参 --- 实际参数

// 返回值

// 注意:

// 函数如果不调用,内部的代码不会执行,只有调用函数,内部代码才会自行

函数的定义

声明式函数 --- 普通函数

通过function关键字定义函数,并且给函数起名

function 函数名(){

函数体

}


// 函数的返回值 return

// 在函数内部声明的变量在函数外部访问不到,只能在函数内部访问

// 如果我们需要在函数外部使用函数内部所产生的值,如果使用

// 就可以利用 函数的返回值 实现

// 函数执行完之后必须有一个结果,这个结果叫做:返回值。

// 使用 return 关键字来执行函数的返回值。

// 在函数内部 return 关键字 后面跟的什么那么这个函数的返回值就是什么


// return 关键字

// return 关键字 除了可以返回值以外还要一个作用

// 会 终止函数的执行

// 在函数内部 只要执行了 return 那么这个函数就会停止执行,

// 即使后面还有代码也不会再执行了


// 如果在函数内部没有 return 或者 return后面没有值,函数的返回值就是 undefined

变量和函数

预解析-变量和函数的提升

01js运行的代码分为三个阶段

预编译

// 检查代码是否存在语法上的错误

// 浏览器帮我们做,所做的事情就是基本的语法检查,

// 除了给我们报错时,看不见摸不着

预解析

// 浏览器帮我们做,所做的事情就是变量和函数的提升,

// 对我们程序中使用var声明的变量和使用function定义的函数进行预解析(提升)工作。

执行阶段

// 从上往下逐行执行js代码

// 注意:

// 对于函数在没有调用执行时是不会进入函数内部的

// 只有在函数被调用执行时才会进入函数内部

// 对函数内部的进行 预编译---预解析---执行阶段

02变量的提升

js会针对所有使用 var关键字声明的变量进行提升,提升到当前作用域的最顶端

针对变量的提升,只会提升声明部分,不会提升赋值部分

// 因为变量声明了没有赋值,结果就是undefined,所以在赋值之前访问结果都是undefined

变量名和函数名重名时候如何执行

// 当 变量名 和 函数名 重名时

在 提升阶段 函数优先

// 在这个名字的变量声明赋值之前,访问这个名字,访问到的都是函数

在 执行阶段 变量优先

// 在这个名字的变量声明赋值之后,访问这个名字,访问到的都是变量

变量的作用域

// 所谓的变量的作用域就是指变量能够起作用的范围

// 根据变量能够起作用的范围,我们将变量分为 全局变量 和 局部变量

全局变量

// 全局变量的作用域是 全局作用域

// 定义在函数外部,在页面的任何位置都能正常访问的变量

局部变量

// 局部变量的作用域是 局部作用域

// 定义在函数内部,只能在该函数内部访问的变量

全局变量和局部变量重名时

当 全局变量 和 局部变量 重名时

在 函数外部 访问到的是 全局变量,因为局部变量在全局中访问不到

在 函数内部 优先访问到的是 局部变量

// 在 函数内部 优先访问到的是 局部变量

// 如果 函数内部没有这个名字的局部变量,才会访问全局变量

变量的作用域链

访问变量时

首先在自身的作用域中查找,如果有就使用

没有就往外层作用域查找,如果有就使用

没有就继续往外层作用域查找,一直会查到全局作用域

// 当变量赋值没有var时

// 会去在上一个作用域中找【同名&带var】

// 找到了 - 直接修改

// 找不到 - 在作用域链上找

// 一直找到顶级全局作用域

// 找到了 - 直接修改

// 找不到 - 自己创建修改(创建一个全局变量)

递归函数

// 递归 本质上是一种算法,是一种程序调用自身的编程技巧。

特点:函数调用自身

和循环非常类似(重复计算执行)。所以递归也和循环一样,需要一个出口

// 虽然递归和循环很像,但是递归不可以代替循环

// - 性能不如循环

// - 内存占用过高(非常致命)

// - 递归次数必须预期收敛

千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip的评论 (共 条)

分享到微博请遵守国家法律