函数与作用域

函数声明和函数表达式有什么区别?

传送门(mdn推荐的文章)
 函数声明:function functionName(){}
 函数表达式:var fn = function(){}
 函数声明会提前,函数表达式可以省略标识符(函数名)。
函数声明时就已经完成函数的构建了,而函数表达式是在程序运行到此处才完成构建(函数表达式的变量声明 完之后值为undefined),所以在重名的情况下,表达式会替代声明
示例

示例

另外mdn里还有一种条件创造函数(Conditionally created functions),我目前还不清楚什么时候应该使用这种方式来定义函数。希望各位大牛指教。

什么是函数的声明前置?什么是变量的声明前置?

所谓的变量声明前置就是在一个作用域块中,所有的变量都被放在块的开始出声明。
和变量声明前置一样,执行代码之前会先读取函数声明,只要函数在代码中进行了声明,无论它在哪个位置上进行声明,js引擎都会将它的声明放在范围作用域的顶部。

arguments 是什么

arguments是函数的形参,它是一个类数组对象。

函数重载怎样实现

  • JS中不存在函数的“重载”,同名函数会被覆盖,但是JS却可以利用函数体针对不同的参数调用相应的逻辑来达到其他语言的函数重载的效果。
  • 其他语言的函数重载样例:

function int translateNumber(parseInt(a),parseInt(b)){
statement;
}
function float translateNumber(parseFloat(a),parseFloat(b)){
statement;
}

  • JS伪"重载"样例:

function getInfOfPeople(name,age,sex) {
if(name){
console.log(name);
}
if(age){
console.log(age);
}
if(sex){
console.log(sex);
}
}
getInfOfPeople(2,3);
getInfOfPeople(2,3,1);

立即执行函数表达式是什么?有什么作用

函数构建后直接就可以运行的函数叫做立即执行函数(传送门)
作用:从传送门中的文章来看,作用就是利用闭包来形成私有变量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 函数声明和函数表达式有什么区别 使用function关键字声明一个函数时,声明不必放到调用的前面。//函数声...
    _李祺阅读 279评论 0 0
  • 函数声明和函数表达式有什么区别? 函数声明和函数表达式是EMACScript规定的两种不同的声明函数的方法。1.函...
    LeeoZz阅读 353评论 0 1
  • 1,函数声明和函数表达式有什么区别 1、背景介绍 定义函数的方法主要有三种: 1:函数声明(Function De...
    进击的前端_风笑影阅读 448评论 0 0
  • 声明前置和作用域也是JS 部分面试常考点 1.函数声明和函数表达式有什么区别 函数声明:使用function关键字...
    湖衣阅读 206评论 0 0
  • 吃完火锅出来就晚上10点了,你知道嘛?太原下雪了,我期待了一整个冬天得雪,我走了无数遍的长风街,街上很冷,行...
    小时间碎碎阅读 228评论 0 0