JS函数:区分语句还是表达式

在 JavaScript 中,函数声明函数表达式是两种创建函数的方式。区分它们的关键在于它们的定义位置以及它们的执行时机

函数声明 (Function Declaration)

function f() {}
  • 这是语句,即函数声明
  • 特点:
    • function 关键字开头,不赋值给任何变量。
    • 函数声明会在编译阶段被提升(Hoisting),意味着它可以在声明之前调用。
    • 例如:
f(); // 可以调用
function f() {
  console.log('This is a function declaration');
}
  • 函数 f 可以在它声明之前调用,因为整个函数声明会在编译阶段提升到作用域的顶部。

函数表达式 (Function Expression)

var f = function f() {};
  • 这是表达式,即函数表达式
  • 特点:
    • 函数被赋值给一个变量(如 f),或者作为表达式的一部分。
    • 函数表达式不会被提升(Hoisting),所以它在赋值之前无法调用。
    • 例如:
f(); 
// Uncaught ReferenceError: Cannot access 'f' before initialization
var f = function() {
  console.log('This is a function expression');
};
  • 在调用 f() 之前必须先定义它,否则会报错。

区分方法

  • 函数声明function 关键字直接出现在代码的顶层(或者代码块中),这就是语句。
  • 函数表达式function 关键字出现在赋值操作符的右边,或者作为另一个表达式的一部分,例如:
    • 赋值给变量:var f = function() {};
    • 作为参数传递:setTimeout(function() {}, 1000);

总结

  • 函数声明是语句,执行时可以在声明之前调用。
  • 函数表达式是表达式,只有在赋值之后才能调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值