【发布时间】:2017-05-19 21:46:14
【问题描述】:
我试图从 ES7 规范中找出它,但我找不到任何精确的东西。简单来说,yield 可以用作变量名。我的意思是,是
var yield;
语法错误?我做了一个简单的测试:
var a;
try{eval('var yield')}catch(b){a=1}
console.log(!a);
我在 Chrome 和 Node.js(都使用 v8 引擎)中进行了尝试,它打印出true。但是,在 Firefox 中,它会打印出false。
据我所知,Firefox 支持生成器函数和其他 ES7 东西,但它的行为不同。它是依赖于实现的,还是 Chrome 或 Firefox 有问题?
附:我问这个是因为我正在编写一个 JavaScript 混淆器,所以我很想知道这个功能是否可以被利用。
【问题讨论】:
-
由于
yield是 ES2015 标准 (developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…) 的一部分,并且被视为关键字,我会说它不适合用作标识符。 -
在控制台中运行内容可能会产生不同的结果,然后将代码作为实际脚本运行。
标签: javascript google-chrome firefox gecko ecmascript-2016