You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Dart仅能通过void main启动程序,无法像JS直接运行多函数?

为什么JS可以直接运行多个函数,而Dart必须从main入口开始?

核心原因是两种语言的执行模型完全不同:

JavaScript:脚本式逐行执行

JS是解释型脚本语言,不管在浏览器还是Node.js环境里,它会从上到下执行所有顶级作用域的代码:

  • 如果顶级作用域里直接写执行语句(比如console.log('hello')),会立刻运行;
  • 如果是函数声明(比如function foo() {}),只会定义这个函数但不会执行;但如果写成自执行形式(比如function foo() {}()或者(() => {})()),就会直接运行。
    简单说,JS没有强制要求入口点,所有顶级代码都会被依次执行。

Dart:编译型语言的入口点机制

Dart属于编译型语言(支持JIT即时编译和AOT提前编译),这类语言的设计逻辑是:程序必须有一个明确的起始执行点,也就是main函数——这是Dart语言规范强制要求的,就像Java、C++这些传统编译语言也必须有main作为入口。

  • 你代码里的function()只是定义了一个函数,但没有被任何地方调用,所以不会执行;
  • 要让其他函数运行,必须在main函数里主动调用它。

修改你的Dart代码,就能执行两个函数的内容了:

void main() {
  var value = "Dart is a worst version of JS";
  print('The value of the input is: $value');
  // 调用自定义函数
  function();
}

void function() {
  var value = "Dart is a worst version of JS heres why";
  print('The value of the input is: $value');
}

总结一下:JS是脚本,逐行跑顶级代码;Dart是编译型语言,必须从main启动,所有逻辑都要通过main触发。

内容的提问来源于stack exchange,提问作者Zipp23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:37:45