1. 创建函数及调用

声明式函数
function fn(){
    console.log('我是声明式函数')
}
fn() // 调用函数

表达式函数
var fn = function(){
    console.log('我是表达式函数')
}
fn() // 调用函数

匿名函数与立即执行函数
(function(){ 
    console.log('我是匿名及立即执行函数')
})()

箭头函数
var fn = () => { 
    console.log('我是ES6新增的箭头函数')
}
fn()

2. 函数参数

当有两段代码本身的功能极其相似,只有个别地方不一样时,就可以把两段代码合并成一个函数,然后把两段代码中不一致的内容通过传参传进去。

形参:形式上的参数——给函数声明一个参数。
实参:实际的参数——在函数调用时给形参赋的值。

var fn = function(a,b){
    // 这里 a 与 b 表示形参
    console.log(a + b) // 3
}
// 1 与 2 是实参
fn(1+2)

2.1 不确定的参数

不确定的参数使用关键字:arguments,代表所有实参的集合。通过下标获取参数的每一位;

通过length获取实参的个数;集合是类数组,可以使用下标,但是没有数组中的各种方法。(不清楚的 arguments 的请看 数组篇)

function fn () {
  console.log(arguments) // [1,2]
}
fn(1, 2)

3. 函数结果

  1. 所有函数都会有函数返回值即函数执行后一定会返回一个结果,如果没有定义默认返回undefined;
  2. 在函数中,return后定义返回值;
  3. 在函数中,return之后的代码就不会再执行了.
function fn (a,b) {
    return a + b
}
fn(1, 2)
console.log(fn(1,2)) // 3

4. 作用域

就是变量的有效范围。 在一定的空间里可以对数据进行读写操作,这个空间就是数据的作用域.

4.1 全局作用域

作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件。

对任何内部函数来说,都是可以访问的。

4.2 局部作用域

局部作用域一般只在固定的代码片段内可访问到,而对于函数外部是无法访问的。

4.3 块级作用域

凡是代码块就可以划分变量的作用域,这种作用域的规则就叫块级作用域。

4.4 作用域链

当代码在一个环境中执行时,会创建变量对象的一个作用域链由子级作用域返回父级作用域中寻找变量,就叫做作用域链。

采取就近原则的方式来查找变量最终的值。

4.5 预解析

JavaScript 代码的执行是由浏览器中的 JavaScript 解析器来执行的。JavaScript 解析器执 行 JavaScript 代码的时候,分为两个过程:预解析过程和代码执行过程。

在执行代码是时候,JS 解析器会把 变量 与 函数 提升到作用域最前面,且不会对变量进行赋值 与 函数调用等操作(变量提升,函数提升)。

 

版权声明:本文为StartledSting原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/StartledSting/p/16720246.html