javascript 函数传递 undefined 作为参数的作用
伊谢尔伦
伊谢尔伦 2017-05-19 10:44:01
0
4
675
var leadingThirtysevenList = list.bind(undefined, 37);

这是在手册中看到的一段关于 bind() 函数传入第二个参数时实现的功能的代码段,其中他将 undefined 作为参数传入。在一些框架中也看到过参数传递 undefined 的做法,但是在网上搜索一直没能找到一个比较完整清晰的回答,想请各位老师给个详细的解答。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
仅有的幸福

你提供的这段代码, 为什么传入undefined和我下面的解释可能是无关的。

我主要说说其他一些框架;比如jquery就会传入undefined作为参数,并且会赋给一个空值。
那是因为js的一个bug问题, 那就是undefined能被重写!!, 是的,你没听错。

至于为什么undefined被重写会很危险呢,看下面的代码:

(function (undefined) {
    let a;
    
    // 如果a没有值则为a赋值.  但因为undefined被重写了,所以这句根本执行不到。
    if (a === undefined) {
        a = 'b';
    }
})(true);
小葫芦

那你觉得如果你希望之传递第二个参数,第一个参数用默认值或是无所谓,该怎么写?

这段代码只是为了实现函数柯里化调用

刘奇

ECMAScript5.1 15.3.4.4中有解释, 当传入的第一个参数是null, undefined时, 函数的上下文将指向window (node中是global)

習慣沉默

第一个是占位用的,但是用null效果会比undefined好吧。一般个人习惯用null来占位。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板