阅读(316)
赞(8)
百度智能小程序 esnext
2020-08-10 16:56:55 更新
SJS 支持部分 ES6 语法。
let & const
代码示例
在开发者工具中打开// demo.sjs
function foo(){
let str = 'hello sjs';
if (true) {
let count = 2;
}
console.log(str); // hello sjs
console.log(count); // 引用错误:count 未定义
}
箭头函数
代码示例
在开发者工具中打开// demo.sjs
const arr = [1, 2, 3];
const double = x => x * 2;
console.log(arr.map(double)); // output: [2, 4, 6]
var obj = {
birth: 1970,
getAge() {
const b = this.birth;
const fn = () => new Date().getFullYear() - this.birth;
return fn();
}
};
obj.getAge();
更简洁的对象字面量(enhanced object literal)
代码示例
在开发者工具中打开var num = 1;
var obj = {
num, // 对象属性
printNum() { // 对象方法
console.log(num);
}
};
obj.printNum(); // 1
注: 不支持super关键字,不能在对象方法中使用super
模板字符串(template string)
const NAME = 'sjs';
const msg = `hello ${NAME}`; // hello sjs
解构赋值(Destructuring)
代码示例
在开发者工具中打开// array 解构赋值
var [a, ,b] = [1, 2, 3];
a === 1; // true
b === 3; // true
// 对象解构赋值
let { foo , bar } = { foo: 'aaa', bar: 'bbb' };
// foo = 'aaa'
// bar = 'bbb'
// 函数参数解构赋值
// 1.参数是一组有次序的值
function f1([x, y, z]) {
console.log(x); // 1
console.log(y); // 2
console.log(z); // 3
}
f1([1, 2, 3]);
// 2.参数是一组无次序的值
function f2({x, y, z}) {
console.log(x); // 1
console.log(y); // 2
console.log(z); // 3
}
f2({z: 3, y: 2, x: 1});
// 解构赋值默认值
var [a = 1] = [];
a === 1; // true
// 函数参数:解构赋值 + 默认值
function r({a, b, c = 3, d = 4}) {
return a + b + c + d;
}
r({a: 1, b: 2}) === 10; // true
Default + Rest + Spread
代码示例
在开发者工具中打开// 1. Default
function f1(x, y = 2) {
// 如果不给y传值,或者传值为undefied,则y的值为12
return x + y;
}
f1(1) === 3; // true
// 2. Rest
function f2(x, ...arr) {
return x * arr.length;
}
f2(3, 'hello', 'sjs') === 6; // true
// 3. Spread
function f3(x, y, z) {
return x + y + z;
}
f3(...[1,2,3]) == 6; // 数组解构
// 4. Rest + Spread
const [a, ...b] = [1, 2, 3]; // 数组解构赋值, b = [2, 3]
const {c, ...other} = {c: 1, d: 2, e: 3}; // 对象解构赋值, other = {d: 2, e: 3}
const f = {...other}; // 对象解构 f = {d: 2, e: 3}