一、ECMAScript 简介
ECMAScript 是 JavaScript 的标准化名称,广泛用于网页开发,也可用于 Qt 的 QML/ECMAScript 脚本。它是一种动态、弱类型、基于对象的脚本语言。
二、基础语法对比
特性 | ECMAScript (JS) | C/C++ | Python |
---|---|---|---|
变量声明 | let, const, var | int, float, char等 | 直接变量名 |
结束符 | ;(可选) | ; | 换行 |
注释 | // 单行, /* 多行 */ | //, /* */ | # 单行, ‘’‘多行’‘’ |
函数定义 | function/箭头函数 | 返回类型+函数名 | def 关键字 |
类 | class 关键字 | class 关键字 | class 关键字 |
数组 | [] | []/array | [] |
字典/对象 | {} | struct/map | {} |
类型系统 | 动态、弱类型 | 静态、强类型 | 动态、强类型 |
三、ECMAScript 基础语法
1. 变量声明
let a = 10; // 块作用域变量
const b = 20; // 常量
var c = 30; // 函数作用域变量(不推荐)
2. 数据类型
- Number, String, Boolean, Object, Array, Null, Undefined, Symbol
3. 条件语句
if (a > 5) {
// ...
} else if (a == 5) {
// ...
} else {
// ...
}
4. 循环
for (let i = 0; i < 10; i++) {
// ...
}
while (a < 10) {
// ...
}
for (let item of arr) {
// 遍历数组
}
5. 函数
function add(x, y) {
return x + y;
}
// 箭头函数
const add = (x, y) => x + y;
6. 对象与数组
let obj = {name: "Tom", age: 18};
let arr = [1, 2, 3, 4];
7. 类与继承
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(this.name + " makes a noise.");
}
}
class Dog extends Animal {
speak() {
console.log(this.name + " barks.");
}
}
四、与 C/C++、Python 的异同
1. 变量声明与类型
- ECMAScript 不需要声明类型,变量类型可变。
- C/C++ 需声明类型,Python 也不需声明类型但类型不可变。
- ECMAScript 有 let/const/var,Python 直接变量名,C/C++ 需类型前缀。
2. 作用域
- ECMAScript 的 let/const 有块级作用域,var 只有函数作用域。
- C/C++、Python 都有块级作用域。
3. 内存管理
- ECMAScript 和 Python 都有垃圾回收,C/C++ 需手动管理内存。
4. 面向对象
- ECMAScript 支持 class 语法(ES6+),但本质是基于原型的对象系统。
- C++ 是基于类的,Python 也是基于类的。
5. 函数
- ECMAScript 支持匿名函数、箭头函数,函数也是对象。
- Python 支持 lambda,C++11 也有 lambda。
6. 模块与导入
- ECMAScript (ES6+) 用 import/export。
- Python 用 import,C++ 用 #include。
五、ECMAScript 常用特性
- 箭头函数:简洁的函数表达式
- 解构赋值:快速提取对象/数组属性
- 模板字符串:
- Promise/async/await:异步编程
- Map/Set:新的集合类型
- for…of, for…in:遍历数组/对象
六、QML/ECMAScript 特点
- QML 中的 JavaScript 语法与 ECMAScript 基本一致。
- 可直接在 QML 文件中编写 JS 脚本,操作 QML 元素属性。
- 适合做界面逻辑、动画、数据绑定等。
七、学习建议
- 熟悉基本语法(变量、函数、对象、数组、类)。
- 多练习 QML/ECMAScript 脚本,结合 Qt 文档。
- 理解异步编程(Promise/async/await)。
- 参考 MDN JavaScript 教程。
- 结合 Qt 官方 QML/JS 文档:Qt QML JavaScript。