Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: docs/es6_chromium.md

Issue 2595253002: Add => as an allowed feature to ES6 style guide (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!-- Feature template markdown: 1 <!-- Feature template markdown:
2 ## Header 2 ## Header
3 3
4 **Usage Example:** 4 **Usage Example:**
5 5
6 ```js 6 ```js
7 7
8 ``` 8 ```
9 9
10 **Documentation:** [link]() 10 **Documentation:** [link]()
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 previous discussion. If the list arrives at some consensus, send a codereview 103 previous discussion. If the list arrives at some consensus, send a codereview
104 to change this file accordingly, linking to your discussion thread. 104 to change this file accordingly, linking to your discussion thread.
105 105
106 > Some descriptions and Usage examples are from [kangax](https://kangax.github.i o/compat-table/es6/) 106 > Some descriptions and Usage examples are from [kangax](https://kangax.github.i o/compat-table/es6/)
107 and [http://es6-features.org/](http://es6-features.org/) 107 and [http://es6-features.org/](http://es6-features.org/)
108 108
109 # Allowed Features 109 # Allowed Features
110 110
111 The following features are allowed in Chromium development. 111 The following features are allowed in Chromium development.
112 112
113 ## `=>` (Arrow Functions)
114
115 Arrow functions provide a concise syntax to create a function, and fix a number
116 of difficulties with `this` (e.g. eliminating the need to write `const self =
117 this`). Particularly useful for nested functions or callbacks.
118
119 Prefer arrow functions over `.bind(this)`.
120
121 Arrow functions have an implicit return when used without a body block.
122
123 **Usage Example:**
124
125 ```js
126 // General usage, eliminating need for .bind(this).
127 setTimeout(() => {
128 this.doSomething();
129 }, 1000); // no need for .bind(this) or const self = this.
130
131 // Another example...
132 window.addEventListener('scroll', (event) => {
133 this.doSomething(event);
134 }); // no need for .bind(this) or const self = this.
135
136 // Implicit return: returns the value if expression not inside a body block.
137 () => 1 // returns 1.
138 () => {1} // returns undefined - body block does not implicitly return.
139 () => {return 1;} // returns 1.
140 ```
141
142 **Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-ar row-function-definitions)
143
144 **Discussion Notes / Link to Thread:**
145
146 **Note**: => does not work in iOS9. Don't use it in code that runs on Chrome fo r
147 iOS. There's a presubmit that should warn you about this.
148
149 [Discussion thread](https://groups.google.com/a/chromium.org/forum/#!topic/chrom ium-dev/iJrC4PVSfoU)
150
151 ---
152
113 ## `Promise` 153 ## `Promise`
114 154
115 The Promise object is used for asynchronous computations. A Promise represents a 155 The Promise object is used for asynchronous computations. A Promise represents a
116 value which may be available now, or in the future, or never. 156 value which may be available now, or in the future, or never.
117 157
118 **Usage Example:** 158 **Usage Example:**
119 159
120 ```js 160 ```js
121 /** @type {!Promise} */ 161 /** @type {!Promise} */
122 var fullyLoaded = new Promise(function(resolve) { 162 var fullyLoaded = new Promise(function(resolve) {
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 ``` 257 ```
218 258
219 **Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-le t-and-const-declarations) 259 **Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-le t-and-const-declarations)
220 260
221 **See also:** [Object.freeze()](https://developer.mozilla.org/en-US/docs/Web/Jav aScript/Reference/Global_Objects/Object/freeze) 261 **See also:** [Object.freeze()](https://developer.mozilla.org/en-US/docs/Web/Jav aScript/Reference/Global_Objects/Object/freeze)
222 262
223 **Discussion Notes / Link to Thread:** 263 **Discussion Notes / Link to Thread:**
224 264
225 --- 265 ---
226 266
227 ## `=>` (Arrow Functions)
228
229 Arrow functions provide a concise syntax to create a function, and fix a number
230 of difficulties with `this` (e.g. eliminating the need to write `const self =
231 this`). Particularly useful for nested functions or callbacks.
232
233 Prefer arrow functions over `.bind(this)`.
234
235 Arrow functions have an implicit return when used without a body block.
236
237 **Usage Example:**
238
239 ```js
240 // General usage, eliminating need for .bind(this).
241 setTimeout(() => {
242 this.doSomething();
243 }, 1000); // no need for .bind(this) or const self = this.
244
245 // Another example...
246 window.addEventListener('scroll', (event) => {
247 this.doSomething(event);
248 }); // no need for .bind(this) or const self = this.
249
250 // Implicit return: returns the value if expression not inside a body block.
251 () => 1 // returns 1.
252 () => {1} // returns undefined - body block does not implicitly return.
253 () => {return 1;} // returns 1.
254 ```
255
256 **Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-ar row-function-definitions)
257
258 **Discussion Notes / Link to Thread:**
259
260 ---
261
262 ## Classes 267 ## Classes
263 268
264 OOP-style and boilerplate-free class syntax, including inheritance, `super()`, 269 OOP-style and boilerplate-free class syntax, including inheritance, `super()`,
265 static members, and getters and setters. 270 static members, and getters and setters.
266 271
267 **Usage Example:** 272 **Usage Example:**
268 273
269 ```js 274 ```js
270 class Shape { 275 class Shape {
271 constructor(x, y) { 276 constructor(x, y) {
(...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 954
950 ```js 955 ```js
951 // See Doc 956 // See Doc
952 ``` 957 ```
953 958
954 **Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-ma th) 959 **Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-ma th)
955 960
956 **Discussion Notes / Link to Thread:** 961 **Discussion Notes / Link to Thread:**
957 962
958 --- 963 ---
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698