搜索

首页  >  问答  >  正文

javascript 函数传递 undefined 作为参数的作用

var leadingThirtysevenList = list.bind(undefined, 37);

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

伊谢尔伦伊谢尔伦2736 天前664

全部回复(4)我来回复

  • 仅有的幸福

    仅有的幸福2017-05-19 10:46:01

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

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

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

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

    回复
    0
  • 高洛峰

    高洛峰2017-05-19 10:46:01

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

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

    回复
    0
  • 怪我咯

    怪我咯2017-05-19 10:46:01

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

    回复
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:46:01

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

    回复
    0
  • 取消回复