有些语言允许您将常量与接口相关联:
W3C抽象接口也是如此,例如:
// Introduced in DOM Level 2:
interface CSSValue {
// UnitTypes
const unsigned short CSS_INHERIT = 0;
const unsigned short CSS_PRIMITIVE_VALUE = 1;
const unsigned short CSS_VALUE_LIST = 2;
const unsigned short CSS_CUSTOM = 3;
attribute DOMString cssText;
attribute unsigned short cssValueType;
};
Run Code Online (Sandbox Code Playgroud)
我想定义这个接口,以便可以从C#调用它.
显然,C#无法定义与接口关联的常量.
有没有办法在没有JavaScript的情况下获得对DOM和/或WebAPI(即全屏API)的读/写访问权限?
我正在尝试用C构建一个基本的应用程序(C源实际上是从GC语言转换的结果).我正在构建的应用程序将作为桌面应用程序运行(它不打算在"真正的"浏览器中运行)所以我可以根据需要调整环境(即布局引擎).
阅读有关fileReader的文档,并发现他们使用void运算符编写方法,如下所示:
void readAsArrayBuffer (
in Blob blob
);
Run Code Online (Sandbox Code Playgroud)
只是试着明白为什么他们这样写呢?如果有这种语法的实际用途?
事后证明它根本不是js,而是IDL,它是接口描述语言.
仅供参考:在提出这个问题之前,我会谷歌并阅读JS中的实际void运算符.所以请没有需要让我回来.问题有点模糊,但它必须处理,为什么Mozilla有关于这样编写的JavaScript的文档?在IDL中,实际的JavaScript几乎没有?
根据ECMAScript 规范,Javascript 数值对应于双精度 64 位二进制格式 IEEE 754 值。
\n\n对于我目前正在开发的 WebIDL 验证器,我需要能够弄清楚给定的数值是否可以转换为WebIDL 浮点类型,即它是否可以表示为有限单精度 32 位 IEEE 754价值。
\n\n我目前决定采用以下方法:
\n\nvalidate: function(value) {\n if (typeof value !== \'number\' || !Number.isFinite(value)) {\n return false;\n }\n\n if (value === 0) {\n return true;\n }\n\n var view = new DataView(new ArrayBuffer(4));\n\n view.setFloat32(0, value);\n\n var converted = view.getFloat32(0);\n var relativeError = Math.abs(value - converted) / value;\n\n return relativeError < Number.EPSILON;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n本质上,我正在做的是:
\n\nDataView
在 4 …javascript floating-point ieee-754 webidl floating-point-conversion