两个月前就开始准备的ES2015(原名ECMA Script 6)的技术分享,正值ES6规范正式定稿之际(完全是巧合,哈哈),在上周五的时候,给组内做了次技术分享,其中涵盖了比较能说明新特性的若干例子。
介绍了新版本规范的若干新特性:
1
soli 2015-06-23 11:00:06 +08:00
赞一个先!
|
2
kuno1 2015-06-23 11:34:10 +08:00
谢谢分享,学习了 :)
|
3
poke707 2015-06-23 11:46:18 +08:00 via Android
之前一直期待ES6,但直到这个PDF才认真地了解一次:)
真是令人兴奋的ES6啊 |
4
onlyice 2015-06-23 11:51:06 +08:00
赞一个,如果大家的浏览器都能迅速支持新标准就好了。。
|
5
onlyice 2015-06-23 12:10:16 +08:00 1
看了一下,很多概念跟 Python 很类似。
但是下面这个例子就不理解了,为啥加了个括号就 OK 了? |
7
sinux 2015-06-23 13:16:08 +08:00
汽车之家
|
8
hbkdsm 2015-06-23 13:33:09 +08:00
大赞!
|
10
xcatliu 2015-06-23 13:45:15 +08:00
|
11
sodatea 2015-06-23 14:04:37 +08:00 2
@onlyice 我觉得楼主这里应该是搞错了
不带括号的形式,不论是 Chrome Developer Tools、Firefox Web Console 还是 Babel REPL,报的错都是 SyntaxError,因为此处 {x: a} 解析起来有歧义,可能是 block statement 也可能是 object literal 而套了括号之后,这一行能够被确定为是 expression statement,所以可以被解析,但是严格模式下仍然会出错(ReferenceError,严格模式禁止隐式创建全局变量)(不过 Chrome 非严格模式下也报 Uncaught ReferenceError: Invalid left-hand side in assignment 错误,不太明白……) 这个 trick 在 ES6 之前也有的 @helone 前端可以用 babel 嘛 |
12
hkongm OP |
14
br00k 2015-06-23 15:07:37 +08:00
学习了。。
|
15
br00k 2015-06-23 15:09:25 +08:00
用ES6规范编写的能编译出兼容的ES5的代码么。
|
16
hkongm OP |
17
SoloCompany 2015-06-23 22:50:48 +08:00 via Android
谢谢分享
|
18
SoloCompany 2015-06-25 16:07:52 +08:00 1
@sodatea
@onlyice 同意11楼的,这里是楼主搞错了 这里出现的是语法错误,和 a 是否有定义完全无关 因为 ES 解释器在这个上下文中遇到左大括号,优先解释为块定义,而不是 Object literal;而如果前面加了小括号,就会强制解释为 Object literal 了。 看看这个 ``` {a:x} ReferenceError: x is not defined //-- 这是楼主误以为报错的原因,但实际不是他想的那样 x=1 1 {a:x} 1 //-- 这里没有出现语法错的,是因为 a: 被解释成 label 了 {x} 1 //-- 没有 label 结果也是一样的 ({a:x}) Object { a: 1 } //-- 加了括号,看出来区别了吧 {x} Object { x: 1 } //-- 这是 object literal 的新语法 ``` 另外,ppt 里面还有个拼写错误,就是对应上面的 object literal 新语法的 ``` var obj = {  // hander: hander 的简写 ------- 拼写错误 handler , }; ``` |
19
SoloCompany 2015-06-25 16:08:39 +08:00
更正一下
上面最后一个 {x} 漏了打括号了 应该是({x}) |
20
hkongm OP |