JavaScript 基础教程JavaScript 简介JavaScript 用法JavaScript 输出JavaScript 语法JavaScript 语句JavaScript 注释JavaScript 变量JavaScript 数据类型JavaScript 对象JavaScript 函数JavaScript 作用域JavaScript 事件JavaScript 字符串JavaScript 运算符JavaScript 比较和逻辑运算符JavaScript if...else 语句JavaScript switch 语句JavaScript for 循环JavaScript while 循环JavaScript break 和 continue 语句JavaScript typeof, null, undefinedJavaScript 类型转换JavaScript 正则表达式JavaScript 错误throw try catchJavaScript 调试JavaScript 变量提升JavaScript 严格模式 (use strict)JavaScript 使用误区JavaScript 表单JavaScript 表单验证JavaScript 验证 APIJavaScript 保留关键字JavaScript JSONjavascript :void(0) 含义JavaScript 代码规范JavaScript 函数定义JavaScript 函数参数JavaScript 函数调用JavaScript 闭包JavaScript HTML DOMJavaScript DOM- 改变 HTMLJavaScript DOM - 改变 CSSJavaScript HTML DOM 事件JavaScript DOM EventListenerJavaScript DOM 元素(节点)JavaScript 对象类型JavaScript Number 对象JavaScript 字符串(String)对象JavaScript Date 对象JavaScript Array 对象JavaScript Boolean 对象JavaScript Math 对象JavaScript RegExp 对象JavaScript window 对象JavaScript window.screen 对象JavaScript window.location 对象JavaScript window.history 对象JavaScript window.navigator 对象JavaScript 弹窗JavaScript 计时事件JavaScript CookieJS中的if和switch该如何选择?JS优化多分支结构JS中的while和for循环该如何选择?JS优化循环结构JS输出杨辉三角JS定义字符串(3种方式)JS获取字符串长度JS字符串拼接/连接(3种方式)JS字符串查找(6种方法)JS截取字符串JS字符串替换replace()JS字符串大写小写转换JS字符串比较大小JS字符串和数组之间的转换JS给字符串添加HTML标签JS去除字符串前后空格JS Unicode编码和解码JS Base64编码和解码JS在接收表单数据时过滤特殊字符JS自定义编码和解码方案

JavaScript 函数定义

JavaScript 使用关键字 function 定义函数

函数可以通过声明定义,也可以是一个表达式


函数声明

使用 function 声明一个函数的语法格式如下

function functionName (parameters) {
   //执行的代码
}

函数声明后不会立即执行,只有当我们主动调用参会

function myFunction(a, b)
{
    return a * b;
}

分号是用来分隔可执行JavaScript语句

由于函数声明不是一个可执行语句,所以不以分号结束


函数表达式

JavaScript 函数可以通过一个表达式定义

函数表达式可以存储在变量中

var x = function (a, b) {
    return a * b
};

在函数表达式存储在变量后,变量也可作为一个函数使用

var x = function (a, b) {return a * b};
var z = x(4, 3);

以上函数实际上是一个 匿名函数 (函数没有名称)

函数存储在变量中,不需要函数名称,通常通过变量名来调用

上述函数以分号结尾,因为它是一个执行语句


Function() 构造函数

从上面的范例中,我们学习了函数通过关键字 function 定义

函数同样可以通过内置的 JavaScript 函数构造器(Function())定义

var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);

实际上,可以不必使用构造函数,上面范例还可以写成

var myFunction = function (a, b) {return a * b}
var x = myFunction(4, 3);

JavaScript 中,很多时候,我们需要避免使用 new 关键字


函数提升 ( Hoisting )

从之前的教程中,我们已经学习了 "hoisting(提升)"

提升 ( Hoisting ) 是 JavaScript 默认将当前作用域提升到前面去的的行为

提升 ( Hoisting ) 应用在变量的声明与函数的声明

因此,函数可以在声明之前调用

myFunction(5);

function myFunction(y) {
    return y * y;
}

使用表达式定义函数时无法提升


自调用函数

函数表达式可以 "自调用"

自调用表达式会自动调用

如果表达式后面紧跟 () ,则会自动调用

不能自调用声明的函数

通过添加括号,来说明它是一个函数表达式

(function () {
    var x = "Hello!!";      // 我将调用自己
})();

以上函数实际上是一个 匿名自我调用的函数 (没有函数名)


函数可作为一个值使用

JavaScript 函数作为一个值使用

function myFunction(a, b) { return a * b;}
var x = myFunction(4, 3);

JavaScript 函数可作为表达式使用

function myFunction(a, b) { return a * b;}
var x = myFunction(4, 3) * 2;


函数是对象

JavaScript 中使用 typeof 操作符判断函数类型将返回 "function"

但是 JavaScript 函数描述为一个对象更加准确

JavaScript 函数有 属性 和 方法

arguments.length 属性返回函数调用过程接收到的参数个数

function myFunction(a, b) {  return arguments.length;}

toString() 方法将函数作为一个字符串返回

function myFunction(a, b) { return a * b;}
var txt = myFunction.toString();


总结归纳

函数定义作为对象的属性,称之为对象方法

函数如果用于创建新的对象,称之为对象的构造函数


链接: https://www.fly63.com/course/7_503