LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 352|回复: 0

垫片(Polyfills)

[复制链接]
发表于 2024-1-18 23:26:18 | 显示全部楼层 |阅读模式
新的语言特性可能不仅包括语法结构和运算符,还可能包括内建函数。

例如,Math.trunc(n) 是一个“截断”数字小数部分的函数,例如 Math.trunc(1.23) 返回 1。

在一些(非常过时的)JavaScript 引擎中没有 Math.trunc 函数,所以这样的代码会执行失败。

由于我们谈论的是新函数,而不是语法更改,因此无需在此处转译任何内容。我们只需要声明缺失的函数。

更新/添加新函数的脚本被称为“polyfill”。它“填补”了空白并添加了缺失的实现。

对于这种特殊情况,Math.trunc 的 polyfill 是一个实现它的脚本,如下所示:

if (!Math.trunc) { // 如果没有这个函数
  // 实现它
  Math.trunc = function(number) {
    // Math.ceil 和 Math.floor 甚至存在于上古年代的 JavaScript 引擎中
    // 在本教程的后续章节中会讲到它们
    return number < 0 ? Math.ceil(number) : Math.floor(number);
  };
}
JavaScript 是一种高度动态的语言。脚本可以添加/修改任何函数,甚至包括内建函数。

两个有趣的 polyfill 库:

core js 支持了很多特性,允许只包含需要的特性。
polyfill.io 提供带有 polyfill 的脚本的服务,具体取决于特性和用户的浏览器。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表