chore: update code style
diff --git a/en/coding-standard.md b/en/coding-standard.md
index a2df024..0cd6cdd 100644
--- a/en/coding-standard.md
+++ b/en/coding-standard.md
@@ -49,7 +49,7 @@
**[MUST]** Set off binary operator with spaces. But place no space between unary operator and its operand.
```js
-var a = !arr.length;
+let a = !arr.length;
a++;
a = b + c;
```
@@ -119,14 +119,14 @@
```js
// good
-var obj = {
+const obj = {
a: 1,
b: 2,
c: 3
};
// bad
-var obj = {
+const obj = {
a : 1,
b:2,
c :3
@@ -142,7 +142,7 @@
function funcName() {
}
-var funcName = function funcName() {
+const funcName = function funcName() {
};
funcName();
@@ -153,7 +153,7 @@
function funcName () {
}
-var funcName = function funcName () {
+const funcName = function funcName () {
};
funcName ();
@@ -205,22 +205,22 @@
// good
-var arr1 = [];
-var arr2 = [1, 2, 3];
-var obj1 = {};
-var obj2 = {name: 'obj'};
-var obj3 = {
+const arr1 = [];
+const arr2 = [1, 2, 3];
+const obj1 = {};
+const obj2 = {name: 'obj'};
+const obj3 = {
name: 'obj',
age: 20,
sex: 1
};
// bad
-var arr1 = [ ];
-var arr2 = [ 1, 2, 3 ];
-var obj1 = { };
-var obj2 = { name: 'obj' };
-var obj3 = {name: 'obj', age: 20, sex: 1};
+const arr1 = [ ];
+const arr2 = [ 1, 2, 3 ];
+const obj1 = { };
+const obj2 = { name: 'obj' };
+const obj3 = {name: 'obj', age: 20, sex: 1};
```
@@ -250,7 +250,7 @@
// Code
}
-var result = number1 + number2 + number3
+const result = number1 + number2 + number3
+ number4 + number5;
@@ -262,7 +262,7 @@
// Code
}
-var result = number1 + number2 + number3 +
+const result = number1 + number2 + number3 +
number4 + number5;
```
@@ -281,7 +281,7 @@
sendProduct(user, product);
}
}
-var arr = [
+const arr = [
'candy', 'sugar'
];
@@ -294,7 +294,7 @@
sendProduct(user, product);
}
}
-var arr = [
+const arr = [
'candy', 'sugar'
];
```
@@ -304,7 +304,7 @@
```js
// good
-var obj = {
+const obj = {
a: 1,
b: 2,
c: 3
@@ -318,7 +318,7 @@
// bad
-var obj = {
+const obj = {
a: 1
, b: 2
, c: 3
@@ -358,10 +358,10 @@
.highlight()
.end();
-var result = thisIsAVeryVeryLongCondition
+const result = thisIsAVeryVeryLongCondition
? resultA : resultB;
-var result = condition
+const res = condition
? thisIsAVeryVeryLongResult
: resultB;
```
@@ -436,7 +436,7 @@
};
// For function expression, the semicolon must not be ignored.
-var funcName = function () {
+const funcName = function () {
};
```
@@ -447,12 +447,12 @@
```js
// good
-var obj = {
+const obj = {
attr1: 'xxx',
attr2: 'yyy'
};
-var arr = [
+const arr = [
'xxx',
'yyy'
];
@@ -460,12 +460,12 @@
// bad
-var obj = {
+const obj = {
attr1: 'xxx',
attr2: 'yyy',
};
-var arr = [
+const arr = [
'xxx',
'yyy',
];
@@ -478,7 +478,7 @@
**[MUST]** Use lowerCamelCase for variables, properties and function names.
```js
-var loadingModules = {};
+const loadingModules = {};
function loadProduct() {
}
```
@@ -497,7 +497,7 @@
```js
function parseSVG() {
}
-var svgParser;
+const svgParser;
```
@@ -510,10 +510,6 @@
### Compatibility
-**[MUST]** The JavaScript code of ECharts should be based on `ECMAScript Language Specification Edition 3 (ES3)`. The language features that not supported by ES3 (namely, features that are only supported by ES5, ES6 or upper versions) must not be used.
-
-But there is an exception that ES Module can be used.
-
Language features can be polyfilled by some utilities, but must not by modifying the prototype of the built-in JS objects.
@@ -526,13 +522,13 @@
sum += val;
});
-var result = zrUtil.map(array, function (val) {
+const result = zrUtil.map(array, function (val) {
return parse(val);
});
-var pos = zrUtil.indexOf(array, val);
+const pos = zrUtil.indexOf(array, val);
-var obj2 = zrUtil.extend({}, obj1);
+const obj2 = zrUtil.extend({}, obj1);
function Element() {
// ...
@@ -551,7 +547,7 @@
const pos = array.indexOf(val);
-var obj2 = Object.assign({}, obj1);
+const obj2 = Object.assign({}, obj1);
class Element {
// ...
@@ -564,18 +560,18 @@
### Variable
-**[MUST]** Variables must be declared by `var`. And a `var` can not declares more than one variable.
+**[MUST]** Prefer using `const` to declare variable. And one line can not declares more than one variable.
```js
// good
-var name = 'MyName';
-var hangModules = [];
-var missModules = [];
-var visited = {};
+const name = 'MyName';
+const hangModules = [];
+const missModules = [];
+const visited = {};
// bad
name = 'MyName';
-var hangModules = [],
+const hangModules = [],
missModules = [],
visited = {};
```
@@ -615,15 +611,15 @@
// ......
}
-for (var i = 0, len = elements.length; i < len; i++) {
- var element = elements[i];
+for (let i = 0, len = elements.length; i < len; i++) {
+ const element = elements[i];
addListener(element, 'click', clicker);
}
// bad
-for (var i = 0, len = elements.length; i < len; i++) {
- var element = elements[i];
+for (let i = 0, len = elements.length; i < len; i++) {
+ const element = elements[i];
addListener(element, 'click', function () {});
}
```
@@ -677,10 +673,10 @@
```js
// good
-var obj = {};
+const obj = {};
// bad
-var obj = new Object();
+const obj = new Object();
```
@@ -688,17 +684,17 @@
```js
// good
-var info = {
+const info = {
name: 'someone',
age: 28
};
// bad
-var info = {
+const info = {
'name': 'someone',
'age': 28
};
-var info2 = {
+const info2 = {
"age": 40
};
```
@@ -719,8 +715,8 @@
**[SUGGEST]** `hasOwnProperty` should be used to when using `for ... in ...`, in case that some extra properties is added on the prototype of `Object` in some runtime environment.
```js
-var newInfo = {};
-for (var key in info) {
+const newInfo = {};
+for (const key in info) {
if (info.hasOwnProperty(key)) {
newInfo[key] = info[key];
}
@@ -732,11 +728,11 @@
```js
// good
-var arr = [];
-var arr2 = new Array(1e4);
+const arr = [];
+const arr2 = new Array(1e4);
// bad
-var arr = new Array();
+const arr = new Array();
```
diff --git a/zh/coding-standard.md b/zh/coding-standard.md
index ca8cd9d..b0ab7e4 100644
--- a/zh/coding-standard.md
+++ b/zh/coding-standard.md
@@ -49,7 +49,7 @@
**[强制]** 二元运算符两个操作数之间必须使用空格,但一元运算符与其操作数间不能有空格。
```js
-var a = !arr.length;
+let a = !arr.length;
a++;
a = b + c;
```
@@ -119,14 +119,14 @@
```js
// 正例
-var obj = {
+const obj = {
a: 1,
b: 2,
c: 3
};
// 反例
-var obj = {
+const obj = {
a : 1,
b:2,
c :3
@@ -142,7 +142,7 @@
function funcName() {
}
-var funcName = function funcName() {
+const funcName = function funcName() {
};
funcName();
@@ -153,7 +153,7 @@
function funcName () {
}
-var funcName = function funcName () {
+const funcName = function funcName () {
};
funcName ();
@@ -205,22 +205,22 @@
// 正例
-var arr1 = [];
-var arr2 = [1, 2, 3];
-var obj1 = {};
-var obj2 = {name: 'obj'};
-var obj3 = {
+const arr1 = [];
+const arr2 = [1, 2, 3];
+const obj1 = {};
+const obj2 = {name: 'obj'};
+const obj3 = {
name: 'obj',
age: 20,
sex: 1
};
// 反例
-var arr1 = [ ];
-var arr2 = [ 1, 2, 3 ];
-var obj1 = { };
-var obj2 = { name: 'obj' };
-var obj3 = {name: 'obj', age: 20, sex: 1};
+const arr1 = [ ];
+const arr2 = [ 1, 2, 3 ];
+const obj1 = { };
+const obj2 = { name: 'obj' };
+const obj3 = {name: 'obj', age: 20, sex: 1};
```
@@ -250,7 +250,7 @@
// Code
}
-var result = number1 + number2 + number3
+const result = number1 + number2 + number3
+ number4 + number5;
@@ -262,7 +262,7 @@
// Code
}
-var result = number1 + number2 + number3 +
+const result = number1 + number2 + number3 +
number4 + number5;
```
@@ -280,7 +280,7 @@
sendProduct(user, product);
}
}
-var arr = [
+const arr = [
'candy', 'sugar'
];
@@ -293,7 +293,7 @@
sendProduct(user, product);
}
}
-var arr = [
+const arr = [
'candy', 'sugar'
];
```
@@ -303,7 +303,7 @@
```js
// 正例
-var obj = {
+const obj = {
a: 1,
b: 2,
c: 3
@@ -317,7 +317,7 @@
// 反例
-var obj = {
+const obj = {
a: 1
, b: 2
, c: 3
@@ -357,10 +357,10 @@
.highlight()
.end();
-var result = thisIsAVeryVeryLongCondition
+const result = thisIsAVeryVeryLongCondition
? resultA : resultB;
-var result = condition
+const res = condition
? thisIsAVeryVeryLongResult
: resultB;
```
@@ -435,7 +435,7 @@
};
// 对于函数表达式,不能忽略分号
-var funcName = function () {
+const funcName = function () {
};
```
@@ -446,12 +446,12 @@
```js
// 正例
-var obj = {
+const obj = {
attr1: 'xxx',
attr2: 'yyy'
};
-var arr = [
+const arr = [
'xxx',
'yyy'
];
@@ -459,12 +459,12 @@
// 反例
-var obj = {
+const obj = {
attr1: 'xxx',
attr2: 'yyy',
};
-var arr = [
+const arr = [
'xxx',
'yyy',
];
@@ -477,7 +477,7 @@
**[强制]** 变量名、属性名及函数名的命名必须遵循 lowerCamelCase(小骆驼拼写法)。
```js
-var loadingModules = {};
+const loadingModules = {};
function loadProduct() {
}
```
@@ -496,7 +496,7 @@
```js
function parseSVG() {
}
-var svgParser;
+const svgParser;
```
@@ -509,10 +509,6 @@
### 兼容性
-**[强制]** ECharts的JavaScript源代码应基于 `ECMAScript Language Specification Edition 3 (ES3)`,不能使用ES3不支持的语法特性(即不能使用ES5、ES6或更高版本的语法特性)。
-
-但允许使用ES Module。
-
语法特性可以通过一些工具方法进行弥补,但不能通过修改内置JavaScript对象的原型来实现。
@@ -525,13 +521,13 @@
sum += val;
});
-var result = zrUtil.map(array, function (val) {
+const result = zrUtil.map(array, function (val) {
return parse(val);
});
-var pos = zrUtil.indexOf(array, val);
+const pos = zrUtil.indexOf(array, val);
-var obj2 = zrUtil.extend({}, obj1);
+const obj2 = zrUtil.extend({}, obj1);
function Element() {
// ...
@@ -550,7 +546,7 @@
const pos = array.indexOf(val);
-var obj2 = Object.assign({}, obj1);
+const obj2 = Object.assign({}, obj1);
class Element {
// ...
@@ -563,18 +559,18 @@
### 变量
-**[强制]** 变量必须用 `var` 声明,且一个 `var` 不能同时声明多个变量。
+**[强制]** 优先使用`const`声明变量 且一行不能同时声明多个变量。
```js
// 正例
-var name = 'MyName';
-var hangModules = [];
-var missModules = [];
-var visited = {};
+const name = 'MyName';
+const hangModules = [];
+const missModules = [];
+const visited = {};
// 反例
name = 'MyName';
-var hangModules = [],
+const hangModules = [],
missModules = [],
visited = {};
```
@@ -614,15 +610,15 @@
// ......
}
-for (var i = 0, len = elements.length; i < len; i++) {
- var element = elements[i];
+for (let i = 0, len = elements.length; i < len; i++) {
+ const element = elements[i];
addListener(element, 'click', clicker);
}
// 反例
-for (var i = 0, len = elements.length; i < len; i++) {
- var element = elements[i];
+for (let i = 0, len = elements.length; i < len; i++) {
+ const element = elements[i];
addListener(element, 'click', function () {});
}
```
@@ -676,10 +672,10 @@
```js
// 正例
-var obj = {};
+const obj = {};
// 反例
-var obj = new Object();
+const obj = new Object();
```
@@ -687,17 +683,17 @@
```js
// 正例
-var info = {
+const info = {
name: 'someone',
age: 28
};
// 反例
-var info = {
+const info = {
'name': 'someone',
'age': 28
};
-var info2 = {
+const info2 = {
"age": 40
};
```
@@ -718,8 +714,8 @@
**[推荐]** 使用 `for ... in ...` 时,应当注意使用 `hasOwnProperty` 以防 `Object` 的原型在某些运行时环境中被添加一些额外属性的情况。
```js
-var newInfo = {};
-for (var key in info) {
+const newInfo = {};
+for (const key in info) {
if (info.hasOwnProperty(key)) {
newInfo[key] = info[key];
}
@@ -731,11 +727,11 @@
```js
// 正例
-var arr = [];
-var arr2 = new Array(1e4);
+const arr = [];
+const arr2 = new Array(1e4);
// 反例
-var arr = new Array();
+const arr = new Array();
```