个人的奋斗还是历史的进程?
by ganlyun
定义:可以接受另一个函数作为参数的函数就是高阶函数 比如数组的forEach, map, reduce, every, some, filter, sort等方法
定义: 对于一个函数,给定一个输入,返回一个唯一的输出。除此之外,不会对外部环境产生任何附带影响。 传入的参数如果是引用对象,通过深复制产生一个新的对象再进行修改、返回,这样就达到了纯函数的目的
词法作用域关注点是Write-Time,即编程时的上下文,而动态作用域以及常见的this的用法,都是Run-Time,即运行时上下文。
JS解释器会进行计算并返回一个值的短语,注意表达式语句expression statement和声明语句declaration statement
JavaScript程序就是一系列可执行语句的集合
函数声明提升优先
var getName=function(){
console.log(2);
}
function getName(){
console.log(1);
}
getName();
//结果为2
//函数、变量声明提升后
function getName(){ //函数声明提升到顶部
console.log(1);
}
var getName; //变量声明提升
getName = function(){ //变量赋值依然保留在原来的位置
console.log(2);
}
getName(); // 最终输出:2
一个函数执行时的最后一个步骤是返回另一个函数的调用,这就叫做尾调用。
function foo () { console.log(111); }
function bar () { foo(); }
function baz () { bar(); }
baz();
//优化后
function foo () { console.log(111); }
function bar () { return foo(); }
function baz () { return bar(); }
baz();
当一个函数尾调用自身,就叫做尾递归。
tags: 高阶函数 - 纯函数 - 词法作用域 - 动态作用域 - 表达式 - 语句 - 变量提升