美文网首页
{JS 函数}

{JS 函数}

作者: jrg_memo | 来源:发表于2016-12-01 17:29 被阅读12次

声明&表达式

  • 格式

函数声明
function print(s) {
console.log(s);
}
函数表达式
var print = function(s) {
console.log(s);
};

  • 调用

函数声明 作用域内调用
函数表达式 只在声明后调用

  • 提升

函数声明整个函数代码块提升至作用域最顶部
函数表达式 只提升 被声明的变量,不提升函数

  • 分号

函数声明 可加可不加
函数表达式 必须加分号来表示结束

声明前置

  • 变量

因为JS引擎的工作方式是先解析代码获取所有被声明的变量,然后逐行运行。
所以所有的变量的声明语句都会被提升到代码顶部

  • 函数

因为JS引擎 将函数名视同变量名,所以
采用function命令声明函数时,整个函数被提升到代码头部
采用赋值语句声明函数时,函数在原位置被声明。

arguments

  • arguments是一个对象。这个对象只有在函数体内部,才可以使用。
  • 由于JS允许函数有不定数目的参数,所以我们需要一种机制,可以在函数体内部读取所有参数。
  • arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推。

重载

  • 定义

允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数必须不同

  • 作用

解决功能类似处理的数据类型不同的问题。

  • 实现

在JavaScript中没有函数重载的概念,函数通过名字确定唯一性,参数不同也被认为是相同的函数,后面的覆盖前面的,但是可以用arguments模拟函数重载
function foo() {
if(arguments.length == 1) {
alert(arguments[0] + 1);
} else if(arguments.length == 2) {
alert(arguments[0] + 2);
}
}
foo(1); //输出 “2”
foo(2, 3); //输出 “4”

立即执行函数表达式

  • 语法
    (function sum(i){   })( );
    (function sum(i){   }( ));
    var a= function sum(i){   }( );
    
  • 定义

一种声明之后就立即进行该函数执行操作的函数
声明一个匿名函数并立刻调用

  • 作用

1 不必为函数命名,避免了污染全局变量;
2 函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。
Tip 通常只对匿名函数使用

作用域链

  • 作用域是指 变量存在的范围
    由于变量分为全局变量和局部变量,作用域相应分为全局作用域和局部作用域
  • 作用域链是指 子对象在找不到相关变量时,会一级一级地向上寻找所有父对象的变量 的这种行为

相关文章

网友评论

      本文标题:{JS 函数}

      本文链接:https://www.haomeiwen.com/subject/rygbuttx.html