内容预览:函数声明提升、参数、立即执行函数IIFE、作用域链

Github地址
Gitee地址

function a()
{
    ...
}
或者
var a=function()
{
    ...
}//函数表达式

函数声明提升

与变量提升类似,函数声明也可被提升。

func();
function func()
{
    ...
}

但函数表达式无法被提升

func();//引发错误
var func=function()
{
    ...
}

参数

  • 型参与实参数量可以不等
  • 形参多时,多余的形参为undefined
  • 实参多时,多余的实参会被丢弃

arguments

函数内arguments表示它接收到的实参列表,它是一个类数组对象

类数组对象:所有属性均为从0开始的自然数序列,并且有length属性,与数组类似可以用方括号书写下标来访问某个属性值,但是不能用数组的方法。

局部变量与全局变量

  • 变量只在其定义时所在的function内部有意义。(局部变量)
  • 如果不将变量定义在任何函数的内部,此时这个变量就是全局变量,它在任何函数内都可被访问。
  • “遮蔽效应”:若函数中也定义了与全局变量同名的变量,则函数内变量会将全局变量“遮蔽”。

立即执行函数IIFE

IIFE是一种特殊的JS函数写法,一旦被定义,就立即被调用

(function(){
    ...
})();

作用:当给变量赋值需要一些较为复杂的计算时(如if语句),使用IIFE显得语法更加紧凑

作用域链

在函数嵌套中,变量会从内到外逐层寻找它的定义

标签: JavaScript, 慕课网前端笔记

添加新评论