js对旧版本支持的两种方法polyfilling 与 transpiling

polyfill

这个单词表示根据新特性的定义,创建一段与之等价但能在旧的js环境中运行的代码。

举例来说,ES6定义了一个名为Number.isNaN(..) 的工具,用于提供一个精准无bug的NaN值检查,取代原来的isNaN(..)

if(!Number.isNaN) { //如果Number没有isNaN的话,那么下面就会进行Number.isNaN的定义
    Number.isNaN = function isNaN(x) {
        return x !== x;
    };
}

NaN是整个语言中唯一一个和自己不相等的值

transpiling 

语言中新增的语法是无法进行polyfilling的。新语法在旧版的js引擎上会抛出未识别和无效错误。

一下是一个简单的transpiling实例,ES6新增了一个名为"默认参数值"的新特性

function foo(a = 2) {
    console.log( a );
}

foo();
foo( 42 );

这个新语法在ES6之前的引擎中是无效的,transpiler代码如下,

function foo() {
    var a = (arguments[0] !== (void 0)) ? arguments[0] : 2;// arguments[0]是第一个参数,如果 
    //不是undefined的话,那么a的值是arguments[0],如果没有参数的话就是默认值2
    console.log( a );
}

非常好用的Babel就是一种transpiler,它支持把ES6+的语法转换为Es5语法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值