这个评论是什么/*@cc_on@*/0在javascript中的if语句内部执行

what does this comment /*@cc_on!@*/0 do inside an if statement in javascript?

本文关键字:中的 javascript if 执行 语句 内部 on@ 评论 是什么 @cc      更新时间:2023-09-26

我在一本关于HTML5的电子书上发现了关于这条评论的一个小问题:/*@cc_on@*/0为了使用document.createElement((创建无法识别的HTML5元素,这个评论应该以某种方式与IE浏览器的识别绑定,但我没有找到关于它如何工作的有用信息,因为即使作者也没有解释它。有人能解释它是什么以及它的作用吗?

感谢关注!

编辑:

在电子书中,作者说:

下一个例子演示了如何解决HTML5中引入的所有新元素的问题。在这里,我们包括了我们想强制IE识别的所有元素:

这是代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Styling Unknown Elements - 3</title>
    <script>
        (function() {
            if (! /*@cc_on!@*/ 0)
                return;
            var e = "abbr,article,aside,audio,canvas,  datalist,details,eventsource,figure,footer,header,hgroup,mark,menu,meter,nav,output, progress,section,time,video".split(','),
                i = e.length;
            while (i--) {
                document.createElement(e[i]);
            }
        })()
    </script>
    <style>
        time {
            font-style: italic;
        }
    </style>
      ...

很抱歉出现了可怕的压痕,但我用的是平板电脑。无论如何,请看一下脚本标记和if条件。

@cc_on语句IE(<11(浏览器的条件编译标志

@cc_on语句(JavaScript(

在脚本的注释中激活条件编译支持。

注意

Internet Explorer 11中不支持条件编译标准模式和Windows应用商店应用程序。条件编译是在Internet Explorer 10标准模式和所有早期版本中都支持版本。

/*@cc_on @*/
/*@
    document.write("JavaScript version: " + @_jscript_version + ".");
    document.write("<br />");
    @if (@_win32)
        document.write("Running on the 32-bit version of Windows.");
    @elif (@_win16)
        document.write("Running on the 16-bit version of Windows.");
    @else
        document.write("Running on a different operating system.");
    @end
@*/

所以

if(!/*@cc_on!@*/0)

如果您的浏览器不知道条件编译(除了IE<11(,则表达式为:

if(!0) // ==> TRUE

否则它将是:

if(!!0) // ==> FALSE