JavaScript注释
有没有JavaScript注释?
当然,JavaScript没有它们,但是有没有其他的库或build议的语言扩展,例如
@type {folder.otherjsmodule.foo} function(){ foo = folder.otherjsmodule.foo(); ... return foo; };
更新 :现在存在一个正确的装饰在JavaScript中的提案 。 现在是第一阶段 ,你可以在BabelJS和traceur中使用它。
有几个库,就像之前提到的closure在注释中使用注释一样, 闭包编译器甚至可以在编译时尽可能多地声明types。 但是,这些并不是经典意义上的实际“注释”。
不像“显而易见”的答案 – 是的,有JavaScript注释,一些运行时支持它们。
例如
(function(){ "use strict"; //code in strict mode })();
这将导致函数内部严格的模式执行。 最近在Mozilla中,我们得到了:
(function(){ "use asm"; //code in asmjs })();
这将导致代码运行在asmjs模式,优化transpiling。
我可以在图书馆中使用这些注释吗?
是的,虽然面向方面的编程和注释在JS中广泛不常见,但是完全可以编写一个接受函数的函数库,查看.toString
,计算出这些注释的结束位置,然后执行相关的代码,然后执行其余的函数。
例如
an(function(){ "validate user"; // this could be something you implement yourself "use strict"; })();
创build这样做的库非常简单,需要一些令人讨厌的代码(使用Function构造函数并将函数parsing为string),但这当然是可能的。 它甚至可以在新的开发工具中debugging,而且几乎和原生函数一样快。
build议的语法可以是:
an.add("assertEmail",function(x){ if(!emailRegex.test(x){ throw new Error("Invalid call to function - expected email got",x); } }); // later on an(function subscribeToNewsLetter(x){ "assertEmail"; var xhr = new XMLHttpRequest(); //send email });
我知道这是旧的。 但是ES2016提供了装饰器(在Javascript中被称为装饰器)。 制作你自己的装饰器很容易,或者你可以扩展我的装饰器模块,让你轻松地包装/注入你的自定义代码。