首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript check yield支持

Javascript check yield支持
EN

Stack Overflow用户
提问于 2010-02-19 23:11:32
回答 7查看 11.3K关注 0票数 28

我在JavaScript中读到了read关键字,我需要在我的项目中使用它。我读到这个关键字是从JS的某个版本开始实现的,所以我认为旧的浏览器不支持它(对吧?)。

有没有办法检查yield关键字是否受支持?或者至少有一种方法可以检查JS的版本是否高于或等于实现该关键字的版本(1.7)?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-08-31 04:40:55

这是一个函数,用于检查是否可以使用yield。

代码语言:javascript
复制
var can_yield = (function(){ 
    try { 
        return eval("!!Function('yield true;')().next()"); 
    } 
    catch(e) { 
        return false; 
    } 
})();
票数 33
EN

Stack Overflow用户

发布于 2010-02-20 00:09:10

yield为JavaScript引入了新的语法。除非通过在script type属性(*)中包含版本号来指定要使用新的JavaScript语法,否则将无法使用yield

指定脚本版本时,只有支持给定版本的浏览器才会执行该块。因此,只有火狐,而不是IE、Opera或WebKit,才会在以下代码中执行顶部代码块:

代码语言:javascript
复制
<script type="text/javascript;version=1.7">
    function x() {
        yield 0;
    }
    var canyield= true;
</script>
<script type="text/javascript">
    if (!window.canyield) {
        // do some fallback for other browsers
    }
</script>

(*:请注意,type属性中指定的类型和版本专门决定是否获取和执行外部脚本,以及执行的模式。不幸的是,脚本的Content-Type被完全忽略了。)

票数 14
EN

Stack Overflow用户

发布于 2013-04-12 02:11:09

这是我对检查原生yield支持的看法。

代码语言:javascript
复制
var canYield = (function(){try{yield;}catch(e){}}())!==undefined;

现代化测试

代码语言:javascript
复制
define(['Modernizr'], function( Modernizr ) {
  // native yield support.
  Modernizr.addTest('yield', (function(){try{yield;}catch(e){}}())!==undefined);
});

Performance http://jsperf.com/yield-support

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2297286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档