Javascript 函数及作用域总结介绍
Javascript 函数及作用域是 Javascript 学习中最核心和重要的部分之一,下面我们将深入学习并总结它们的基本知识。
函数(Function)
定义
在 Javascript 中,函数是一种数据类型,可以被执行。函数有两种方式定义,一种是函数声明方式,另一种是函数表达式方式。
函数声明方式
function funcName(param1, param2, ...) {
// 函数体
return result;
}
这里 funcName
指函数名, param1, param2,...
指函数参数, return
指返回值。
函数表达式方式
var funcName = function(param1, param2, ...) {
// 函数体
return result;
}
这里 var
定义了一个函数变量,funcName
是变量名,可不加;param1, param2, ...
是函数参数,不需要在函数定义时指定类型,可以不加;return
指返回值。
调用方式
函数声明方式和函数表达式方式的调用方式是一样的。
var result = funcName(param1, param2, ...);
作用域(Scope)
作用域描述了变量在何处可见与可访问到。Javascript 中的作用域是词法作用域(lexical scope,也称静态作用域)。
题目1: 方式一
var name = "tom's window";
function person() {
console.log("name: " + name);
}
person(); // name: tom's window
在上述代码中,name
是在 person()
函数的外部定义的一个全局变量,在 person()
中,name
可以被访问到并输出。
题目2: 方式二
function person() {
var name = "tom's window";
console.log("name: " + name);
}
person(); // name: tom's window
在上述代码中,name
是在 person()
函数内部定义的,其作用域只能在该函数内进行访问。
尾调用优化
Javascript 引擎的尾调用优化(tail call optimization)可以使得某些函数的递归方式更加节省内存,避免栈溢出等问题。
function factorial (n, p = 1) {
if (n <= 1) {
return 1 * p;
} else {
let x = n * p;
return factorial(n - 1, x);
}
}
console.log(factorial(5)); // 120
在 factorial()
函数尾部调用自己时进行了优化,使得其递归调用变得高效、节省内存。
以上为 Javascript 函数及作用域的一些重点知识介绍。通过阅读、学习并掌握这些知识点,可以深入理解 Javascript 语言以及编写出更为高效的代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 函数及作用域总结介绍 - Python技术站