在JavaScript中,我可以这样做:
foo = "\u2669" // 1/4 note
Run Code Online (Sandbox Code Playgroud)
但我不能这样做
foo = "\u1D15D" // full note -five hex digits
Run Code Online (Sandbox Code Playgroud)
它将被解释为"\ u1D15"后跟"D"
这有什么变通方法吗?
更新2012-07-09:ECMAScript Harmony的提议现在包括对所有Unicode字符的支持.
我正在尝试找到Node.js接受的所有标志的列表,特别是那些用于ES6-Harmony功能的标志,但我找不到任何标志.有这样的事吗?
HTML Imports是Web Components规范的一部分,它提供了一种处理Web依赖关系的方法.ES6模块也做同样的事情,但仅适用于Javascript代码.
关于这两者如何协同工作是否有任何明确性?
编辑:一个例子:在我最近的一个项目中,我有两个Javascript组件(文件),其中一个依赖于另一个,但任何HTML代码(这是另一个组件)都可以使用它们中的任何一个.因此,当我在HTML中包含依赖脚本时,我也不想包含父脚本(避免手动依赖性处理).似乎没有明确的方法来实现它,除了将ES6模块与脚本包括混合.我看到的唯一选择是为每个组件维护一个单独的文件,并指定所需的文件和依赖项,例如component.io.
我正在使用es6-module-transpiler,esprima和JSHint以及esnext: true选项.当我提出时,JSHint抱怨:
export default = { some: 'thing', other: 'thing' };
Run Code Online (Sandbox Code Playgroud)
但是esprima在我使用时抱怨
export default { some: 'thing', other: 'thing' };
Run Code Online (Sandbox Code Playgroud)
该规范说
export default AssignmentExpression ;
这让我觉得JSHint需要更新和esprima正确地轰炸,因为没有任务.有人可以成为我的决定者吗?
我想在JS中缓存大对象.这些对象是按键检索的,缓存它们是有意义的.但它们不会同时适合内存,所以我希望它们在需要时进行垃圾收集 - GC显然知道更好.
使用其他语言中的WeakReference或WeakValueDictionary来创建这样的缓存是非常简单的,但是在ES6中我们有WeakMap,而密钥很弱.
那么,是否有可能制作类似于WeakReference或制作垃圾收集的缓存WeakMap?
javascript caching garbage-collection ecmascript-harmony ecmascript-6
在我的测试目录中,我有一个mocha.opts包含以下内容的文件:
--harmony
--recursive
--growl
--reporter spec
--require should
Run Code Online (Sandbox Code Playgroud)
当我运行时mocha,我收到以下错误:
/project/server/utilities/encryption.js:3
const
^^^^^
SyntaxError: Use of const in strict mode.
Run Code Online (Sandbox Code Playgroud)
当然,这是因为我的使用const需要ES6 Harmony.当我跑步时mocha --harmony,我的测试执行得很好.我mocha.opts文件中的其他条目按预期工作.
由于某种原因,mocha.opts文件是否忽略了--harmony参数?或者我做错了吗?摩卡文档没有详细说明,我无法在这里或其他任何地方找到答案.
我确信这是相对简单的,我错过了一些明显的东西.我正在阅读Mozilla关于ES6 的教程,他们关于解构的章节包含以下模式:
功能参数定义
作为开发人员,我们通常可以通过接受具有多个属性作为参数的单个对象来展示更符合人体工程学的API,而不是强迫我们的API使用者记住许多单个参数的顺序.每当我们想要引用它的一个属性时,我们可以使用解构来避免重复这个单个参数对象:
Run Code Online (Sandbox Code Playgroud)function removeBreakpoint({ url, line, column }) { // ... }这是Firefox DevTools JavaScript调试器(也在JavaScript-yo dawg中实现)的简化现实代码片段.我们发现这种模式特别令人愉悦.
我不明白这与解构有何关系.您是否允许将对象传递给此函数的想法,只要它包含所有项目,即可以按任意顺序进行,即{ line: 10, column: 20, url: 'localhost' }?
如果是这样,那么有什么好处呢
function removeBreakpoint(params) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
其中params为与对象url,line和column?是否只是强制Javascript在通过显式定义它们时在析构化上下文中使用时验证函数的参数?
我已经看到一些示例表明Firefox支持某种JavaScript语法*something* if *expression*;.
作为我正在谈论的一个例子,请参阅此MDN文章,其中包含以下示例:
var evens = [i for each (i in range(0, 21)) if (i % 2 == 0)];
Run Code Online (Sandbox Code Playgroud)
我的问题是:
用什么名字来描述这种语法?我主要想知道这一点,以便我可以谷歌它并阅读更多相关信息.我已经尝试了谷歌搜索我能想到的最好的,但未能将正确的术语放在一起以获得有用的结果.
这种语法可以存在于数组理解之外的其他地方吗?我觉得我已经看到过在数组之外使用的其他示例(例如上面的例子中),但我不确定.
在哪里可以阅读有关此语法的更多信息?
除了Firefox之外,还有其他浏览器支持吗
这个功能是ES5还是ES-harmony的计划?
我已经有节点0.10.*并且我安装了nvm,然后通过nvm我再次安装了0.11.13和0.10.
node --version返回0.11.13
我尝试使用我读过的一些ES6功能,而我尝试过的任何功能都没有.
我用我的脚本运行 node --harmony index.js
...args 说 SyntaxError: Unexpected token .
let x = 5; 也给出了错误 - SyntaxError: Unexpected identifier
我在哪里可以找到0.11.13目前支持的内容?
假设我在一个大文件中有一个类,如下所示:
export default class {
constructor () {}
methodA () {}
methodB () {}
methodC () {}
}
Run Code Online (Sandbox Code Playgroud)
我想分手类的定义,这样methodA,methodB和methodC分别在自己单独的文件中定义.这可能吗?
javascript ×7
ecmascript-6 ×3
node.js ×2
caching ×1
esprima ×1
jshint ×1
mocha.js ×1
nvm ×1
unicode ×1
unit-testing ×1