JavaScript: что означает / * @ @ * /? - PullRequest
10 голосов
/ 23 августа 2011

Может кто-нибудь объяснить, как работает начало и конец скрипта html5shim?

скрипт начинается с /*@ и заканчивается @*/ следующим образом:

/*@cc_on(function(a,b){function ........ (this,document);@*/

Что делает /*@ @*/?

Я бы ожидал, что последовательность / * * / закомментирует все строки между ними, но так как скрипт выполняется, то не может ли это быть здесь? Я в замешательстве.

найдено по адресу:

http://html5shim.googlecode.com/svn/trunk/html5.js

Ответы [ 2 ]

14 голосов
/ 23 августа 2011

IE в JScript поддерживает «условную компиляцию», трюк, скрывающий специальную информацию о браузере в комментариях.Идея состоит в том, что /*@...@*/ - это такая необычная последовательность символов, что ее можно безопасно использовать для введения этой новой функции уровня синтаксиса.

html5shiv использует ее для создания фрагмента кода, который даже не будетпопробуйте запустить в большинстве браузеров (которые, как и вы, будут интерпретировать все это как рекомендацию), но которые имеют особое значение для IE.

MS doc здесь .Никакой другой движок JS не поддерживает это.Как правило, вместо этого вы предпочитаете более явный код, отслеживающий поведение, но если вам действительно нужно обнаружить функцию IE, которая не подвергается анализу, иначе это может быть удобно.

7 голосов
/ 23 августа 2011

Это IE-изм для «условной компиляции»: http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

...